a 와 b 가 2,3 4,5 이렇게 붙을 때에 예외처리를 해주어야한다.
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
if(a<b)
{
while(true)
{
answer++;
if( (b - a) == 1 && (a %2 == 1 && b%2 == 0))
{
break;
}
if(a % 2 == 0 )
{
a = a * 0.5;
}
else
{
a = a* 0.5 + 1;
}
if(b % 2 == 0 )
{
b = b * 0.5;
}
else
{
b = b* 0.5 + 1;
}
}
}
else
{
while(true)
{
answer++;
if( (a - b) == 1&& (a %2 == 0 && b%2 == 1))
{
break;
}
if(a % 2 == 0 )
{
a = a * 0.5;
}
else
{
a = a* 0.5 + 1;
}
if(b % 2 == 0 )
{
b = b * 0.5;
}
else
{
b = b* 0.5 + 1;
}
}
}
return answer;
}
'코딩 테스트' 카테고리의 다른 글
프로그래머스 - 스킬트리 (0) | 2024.08.22 |
---|---|
프로그래머스 - 더 맵게 (0) | 2024.08.09 |
프로그래머스 - 네트워크 (bfs, dfs or union-find) (0) | 2024.07.26 |
백준 1246 (0) | 2024.06.12 |
백준 11004 (0) | 2024.06.11 |