반응형
- 문제
A와 B가 주어졌을 때 몇번의 대결만에 만나게 될 지 구하는 문제다.
- 풀이
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0, sum = 1;;
bool left, right;
while(sum != n){
answer++;
sum *= 2;
}
while(sum != 0){
int half = sum/2;
left = (a - half <= 0) ? false : true;
right = (b - half <= 0) ? false : true;
if(left != right){
return answer;
}
else if(!left){
sum /= 2;
}
else{
sum /= 2;
a -= sum;
b -= sum;
}
answer--;
}
return 1;
}
절반으로 나누었을 때 둘다 왼쪽에 있거나 둘다 오른쪽에 있으면 절반씩 줄여 나가고
만약 둘다 다른 쪽에 있으면 현재 2의 n승을 정답으로 내놓으면 된다.
- 기억할 것!
X
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 점프와 순간이동 C++ (0) | 2022.10.22 |
---|---|
프로그래머스 멀리 뛰기 C++ (0) | 2022.10.22 |
프로그래머스 베스트앨범 C++ (0) | 2022.10.14 |
프로그래머스 N개의 최소공배수 (0) | 2022.10.14 |
프로그래머스 구명보트 C++ (0) | 2022.10.14 |