[BAEKJOON] 1057번 토너먼트

2024. 3. 6. 20:19·Algorithm/Brute Force

 

https://www.acmicpc.net/problem/1057

 

1057번: 토너먼트

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를

www.acmicpc.net

 

지문이 너무 길어서 읽는 시간이 많이 걸렸던 문제였다.

첫번째 접근방식은 모든조건을 if문을 두어 풀어서 시간초과가 났다,,,

소스코드
#include <vector>
#include <iostream>
using namespace std;

int n, kim, im, cnt;
//홀수 일때 마지막 한명 부전승
//라운드 마다 참가자의 번호를 순서 유지하며, 다시 번호 매김
int main(){
	cin >> n >> kim >> im;
	cnt = 1;
	bool possible = false;
	while (1) {
		if (im - kim == 1 && kim % 2 == 1) {
			possible = true;
			break;
		}
		cnt++;
		if (kim % 2 == 0) kim /= 2;
		else if (kim % 2 == 1) kim = kim / 2 + 1;
		if (im % 2 == 0) im /= 2;
		else if (im % 2 == 1) im = im / 2 + 1;
		
	}
	if (possible) cout << cnt;
	else cout << -1;
}

 

어떻게 간단하게 생각할 방법이 없을까 하는 순간에,, 두개씩 짝지었을때 같은 그룹에만 속하기만 하면 되는데 그러면 (n + 1) / 2가 서로같으면 두 사람은 같은 그룹에 속한다는 것을 깨달았다. 문제 지문 길이에 비해서 간단한 문제였다 ,,,,

 어려울수록 돌아가보자,,!
소스코드
#include <vector>
#include <iostream>
using namespace std;

int n, kim, im, cnt;
//홀수 일때 마지막 한명 부전승
//라운드 마다 참가자의 번호를 순서 유지하며, 다시 번호 매김
int main(){
	cin >> n >> kim >> im;
	while (kim != im) {
		cnt++;
		kim = (kim + 1) / 2;
		im = (im + 1) / 2;
	}
	cout << cnt;
}

'Algorithm > Brute Force' 카테고리의 다른 글

[BAEKJOON] 14502번 연구소  (0) 2024.04.07
[BAEKJOON] 14500번 테트로미노  (1) 2024.04.06
[BAEKJOON] 7568번 덩치  (0) 2024.03.20
'Algorithm/Brute Force' 카테고리의 다른 글
  • [BAEKJOON] 14502번 연구소
  • [BAEKJOON] 14500번 테트로미노
  • [BAEKJOON] 7568번 덩치
Ls._.Rain
Ls._.Rain
안되면 될때까지 삽질했던 기록
  • Ls._.Rain
    Ls{Diary}
    Ls._.Rain
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Github (2)
      • Spring (51)
        • Batch Programming (13)
        • 결제 (4)
        • 대용량 트래픽 (32)
        • OpenAI (0)
        • Security (0)
        • WebSocket (0)
        • JPA (1)
      • Algorithm (67)
        • DFS (6)
        • BFS (6)
        • Dynamic Programming (10)
        • Brute Force (4)
        • Binary Search (6)
        • 구현, 시뮬레이션 (15)
        • Stack (1)
        • Greedy (4)
        • Priority_Queue (2)
        • Back Tracking (3)
        • Geometry (2)
        • SCC (1)
        • 투포인터 (4)
        • 최대유량 (1)
        • 정렬 (1)
      • OS (0)
      • DevOps (15)
        • AWS (11)
        • Docker (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • hELLO· Designed By정상우.v4.10.0
Ls._.Rain
[BAEKJOON] 1057번 토너먼트
상단으로

티스토리툴바