#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
if (a > b)
{
int iTemp = a;
a = b;
b = iTemp;
}
// 23 이라면 2/2 = 1 3/2 = 1
// 34 이라면 3/2 = 1 4/2 = 2
while (!(a + 1 == b) && (a /2 != b/2))
{
++answer;
a = (a + 1) / 2;
b = (b + 1) / 2;
}
return answer;
}
처음에 내가 푼 답이다. 처음에는 음 괜찮게 풀은거 같다 라는 생각이 들었는데
두개 보고 나서 생각이 달라졌다.
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
a--;
b--;
int answer=0;
while(a!=b){
a=a/2;
b=b/2;
answer++;
}
return answer;
}
0을 맨 처음으로 만들고 12가 기준이 아니라 01 즉 /2 했을 때 같을때만 만들었다... 와 이건 진짜.. 깔끔 그자체...
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while (a != b) {
a = (a + 1) >> 1; // 2 1 1
b = (b + 1) >> 1; // 4 2 1
++answer;
}
return answer;
}
비트연산자... 역시 2로 나눌땐 비트연산자! 싶긴한데... 쓰라고 해야지 쓸 것같은데... 바로 딱 나오는 게 좀... 크...
'오늘의 알고리즘' 카테고리의 다른 글
[C++]2021 KAKAO BLIND RECRUITMENT순위 검색(프로그래머스 2레벨) (0) | 2022.03.11 |
---|---|
[C++]2021 Dev-Matching: 웹 백엔드 개발자(상반기)다단계 칫솔 판매(프로그래머스 3레벨) (0) | 2022.03.10 |
[C++]찾아라 프로그래밍 마에스터게임 맵 최단거리(프로그래머스 2레벨) (0) | 2022.03.08 |
[C++]그래프 순위(프로그래머스 3레벨) (0) | 2022.03.07 |
[C++]이분탐색 징검다리(프로그래머스 4레벨) (0) | 2022.03.06 |