https://school.programmers.co.kr/learn/courses/30/lessons/12985
0. Headers
using namespace std;
1. 알고리즘
- a가 b가 같지 않을 때 까지 경기 진행
- 조건이 a와 b가 경기를 하는 경우
- a와 b를 뺐을 때 1인 경우 붙어있는 경우
- a와 b를 비교해서 큰 값이 만약 짝수이면 경기를 시작
int solution(int n, int a, int b)
{
int answer = 1;
while (a != b)
{
if ((abs(a - b) == 1) && max(a, b) % 2 == 0)
return answer;
}
}
- 대진표를 그려보게 된다면 1,2 인 경우의 경기를 했을 때 값이 1로 고정
- 위의 경우 때문에 홀수인 경우는 0이 되므로 1을 더해줌으로써 짝수로 만듦
int solution(int n, int a, int b)
{
while (a != b)
{
if (a % 2 == 1) a++; a /= 2;
if (b % 2 == 1) b++; b /= 2;
answer++;
}
return answer;
}
2. 완성 코드
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 1;
while (a != b)
{
if ((abs(a - b) == 1) && max(a, b) % 2 == 0)
return answer;
if (a % 2 == 1) a++; a /= 2;
if (b % 2 == 1) b++; b /= 2;
answer++;
}
return answer;
}
'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글
[Programmers] 구명보트 (0) | 2023.01.17 |
---|---|
[Programmers] 이상한 문자 만들기 (0) | 2023.01.16 |
[Programmers] 점프와 순간 이동 (0) | 2023.01.09 |
[Programmers] 삼총사 (0) | 2023.01.07 |
[Programmers] 행렬의 덧셈 (0) | 2023.01.07 |