https://programmers.co.kr/learn/courses/30/lessons/12985#
프로그래머스 예상 대진표 문제입니다. Level 2의 문제이고 점화식을 만들었더니 금방 풀 수 있었습니다.
코드를 살짝 손볼 곳이 더 있을 것 같긴하지만! 시간이 없으므로 그냥 올립니다 ㅎㅎ..
이 문제 대진표에서는 서로 붙은 숫자 중 짝수를 2로 나누면 그다음에 자신의 대진 숫자가 되는 것이 포인트이고
대진표의 두 숫자들의 합이 등차수열을 이루기 때문에 4n-1=a+b라는 식을 만들어서 풀 수 있었습니다.
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 1;
if( (a+b+1)%4 == 0 && Math.abs(a-b) == 1){
return 1;
}
while(n!=1){
if(a != 1 && a%2 == 0){
a = a/2;
} else {
a = (a+1)/2;
}
if(b%2 ==0){
b = b/2;
} else {
b = (b+1)/2;
}
answer++;
if( (a+b+1) % 4 == 0 && Math.abs(a-b) == 1)
break;
n = n/2;
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 캐시(실패) (0) | 2020.03.28 |
---|---|
프로그래머스 - 뉴스 클러스터링 (0) | 2020.03.27 |
프로그래머스 - 124 나라의 숫자 (0) | 2020.03.21 |
프로그래머스 - 탑 (0) | 2020.03.21 |
프로그래머스 - 스킬트리(정답) (0) | 2020.03.21 |