반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
N명의 참가자, 참가자 A, B가 있을 때, 두 사람이 만날 수 있는 라운드를 구해주세요.
풀이 방법
승부는 (1, 2) , (3, 4) (5, 6) 즉, 낮은 홀수번과 짝수번이 붙게 되며 다음 라운드에 가게 될시
(1, 2)는 1번으로 (3, 4)번은 2번으로 (5, 6)번은 3번으로 가게 됩니다.
즉, 두 사람이 만났다고 할 수 있는 부분은
두 사람의 번호가 (낮은 홀수번 X, X+1)일 경우 입니다.
코드로 치면 아래와 같습니다.
if (a % 2 == 0 && b + 1 == a)
break;
if (b % 2 == 0 && a + 1 == b)
break;
참가자 A와 B는 항상 이기기 때문에
다음 라운드로 가게 되면 자신의 번호 + 1이 됩니다.
a = (a + 1) / 2;
b = (b + 1) / 2;
(1, 2) 일 경우 무조건 1이 되며 (3, 4)일 경우 무조건 2가 되는 코드입니다.
위 코드를 두 사람이 만날 때 까지 반복하면 됩니다.
정답 코드
using System;
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 1;
while (true)
{
if (a % 2 == 0 && b + 1 == a)
break;
if (b % 2 == 0 && a + 1 == b)
break;
a = (a + 1) / 2;
b = (b + 1) / 2;
answer++;
}
return answer;
}
}
반응형
LIST
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 지형 이동 (C#) [Lv. 4] (0) | 2025.02.14 |
---|---|
프로그래머스 멀리 뛰기 (C#) (0) | 2025.02.13 |
프로그래머스 트리 트리오 중간값 (C++) (0) | 2025.02.08 |
프로그래머스 지형 편집 (C++) (1) | 2025.02.07 |
프로그래머스 징검다리 (C++) (0) | 2025.02.02 |