Algorithm/Java
[프로그래머스/JAVA] 예상 대진표
dbfl9911
2024. 11. 30. 23:25
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12985
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[ 정답 코드 & 올바른 풀이 ]
📌 올바른 풀이
1 2 / 3 4 / 5 6 / 7 8
(1) / 4(2) /(3) / 7(4)
4(1) / 7(2) ----> 3번째까지!
(1)
--> 3번째가 정답
위 입출력 예에서 A와 B의 경우만 고려해서 판단하면 됩니다.
A : 4 -> 2 -> 1 -> 1
B : 7 -> 4 -> 2 -> 1
위의 순으로 숫자가 달라지기 때문에
A의 다음 나올 수의 변화는 (기존 수 / 2) + (기존 수 % 2) 하면 그 다음 수가 나오고,
B의 다음 나올 수의 변화 또한 (기존 수 / 2) + (기존 수 % 2) 하면 그 다음 수가 나오는 걸 볼 수 있습니다.
A와 B 모두 마지막 숫자가 공통되게 같아지므로 반복문을 써서 A와 B의 수가 같아지기 전까지 반복해 횟수를 카운트하면 답이 나옵니다.
📌 정답 코드
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
// 1 2 / 3 4 / 5 6 / 7 8
// (1) / 4(2) /(3) / 7(4)
// 4(1) / 7(2) ----> 3번째까지!
// (1)
// --> 3번째 라운드에서 붙게됌
while(a != b) { // a의 값과 b의 값이 일치할 때까지
a = (a / 2) + (a % 2); // 4 -> 2 -> 1 -> 1
b = (b / 2) + (b % 2); // 7 -> 4 -> 2 -> 1
answer++;
}
return answer;
}
}
반응형