Life Engineering
[프로그래머스] 예상 대진표 (C++) 본문
https://programmers.co.kr/learn/courses/30/lessons/12985
#include <iostream>
using namespace std;
int numbering(int n){
if (n%2==0)
return n/2;
else
return (n+1)/2;
}
int solution(int n, int a, int b)
{
int answer = 0;
while (a!=b){
a=numbering(a);
b=numbering(b);
answer++;
}
return answer;
}
a와 b를 2로 나눠주면서 값이 같을 때가 둘이 경기에서 만날 때이다.
다른 분들의 코드를 보니,
a와 b를 2로 나눠줄 때 bit 연산을 이용한다. (bit를 오른쪽으로 한번 밀어주면 2로 나누는 것을 의미한다)
또한 a, b가 홀수건 짝수건 관계없이 (a+1)>>1 를 해주면 값이 나온다.
'Problem Solving' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 (C++) (0) | 2021.11.18 |
---|---|
[BOJ 1038] 감소하는 수 (C++) (0) | 2021.11.11 |
[프로그래머스] N개의 최소공배수 (C++) (0) | 2021.11.11 |
[프로그래머스] 순위 (C++) (0) | 2021.11.05 |
[프로그래머스] 순위 검색 (C++) (0) | 2021.11.04 |