-
[프로그래머스/JAVA] 예상 대진표Algorithm/Java 2024. 11. 30. 23:25
https://school.programmers.co.kr/learn/courses/30/lessons/12985
[ 정답 코드 & 올바른 풀이 ]
📌 올바른 풀이
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; } }
반응형'Algorithm > Java' 카테고리의 다른 글
[프로그래머스/JAVA] 괄호 회전하기 (0) 2024.12.01 [프로그래머스/JAVA] 연속 부분 수열 합의 개수 (0) 2024.12.01 [프로그래머스/JAVA] 귤 고르기 (0) 2024.11.24 [프로그래머스/JAVA] 카드 뭉치 (0) 2024.11.24 [프로그래머스/JAVA] 시저암호 (0) 2024.11.17