문제 설명 |
본 문제는 프로그래머스의 예상 대진표 문제입니다.
입출력 예
N | A | B | answer |
8 | 4 | 7 | 3 |
해결 과정 |
이 문제는 부전승이 존재하지 않고 참가자의 수가 2의 지수 승으로 주어집니다.(제한 사항)
그리고 개개인의 번호를 입력값으로 주어지는데, 참가자의 수가 2의 지수 승이고 부전승이 없기에
모든 개개인의 번호는 대진표 한 그룹의 번호로 바꿀 수 있습니다. 그리고 한 라운드가 끝나면
총 인원의 수가 2배 줄며 그룹의 수도 2배 줄게 됩니다. 이때 이긴 사람부터 차례대로 오름차순 그룹에 배정되기에
1,2번 그룹의 승자가 1그룹으로 들어가게됩니다.
이 때 입력으로 받은 두 선수의 번호가 같은 그룹이 되었을 때 라운드의 번호를 반환하면 정답입니다. 해당 라운드에도
만나지 못했다면 이 과정을 반복합니다.
코드 전문 |
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
if (a % 2 == 0) a /= 2; else a = (a+1)/2;
if (b % 2 == 0) b /= 2; else b = (b+1)/2;
while (1)
{
answer++;
if (a == b) return answer;
if (a % 2 == 0) a /= 2; else a = (a+1)/2;
if (b % 2 == 0) b /= 2; else b = (b+1)/2;
}
return answer;
}
느낀 점 (잡설 99% , 배운점 1%(많은 편)) |
더보기
괜찮은 아이디어가 생각나서 잘 풀었습니다!
긴 글 읽어주셔서 감사합니다.
부족한 점이 있다면 부디 알려주시면 감사하겠습니다.
'알고리즘 부셔버렷 > ProblemSolving' 카테고리의 다른 글
[BOJ] 백준 2631 줄 세우기 (문제풀이, 코드 c++) (1) | 2023.01.01 |
---|---|
[프로그래머스] 순위 검색 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.13 |
[프로그래머스] 게임 맵 최단거리 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.12 |
[프로그래머스] 소수 찾기 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.10 |
[프로그래머스] 가장 큰 수 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.09 |
댓글