문제
https://school.programmers.co.kr/learn/courses/30/lessons/12985
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
틀린 코드 -> while문의 종료조건 때문에 시간 초과가 나는 테스트 케이스들이 존재
#include <iostream>
using namespace std;
/*
while문으로 계속 2로 나눈 몫으로 a,b의 숫자가 유지됨.
+ 항상 이긴다고 가정 -> 안만나는 경우는 x
출력 : round
*/
int solution(int n, int a, int b)
{
int round = 1; // 라운드
if(a>b)
swap(a,b);
while(a>0 && b>0)
{
if(a%2 == 1)
{
a++;
}
a/=2;
if(b%2==1)
{
b++;
}
b/=2;
if((b-a ==1) && a%2== 1 && b%2==0)
{
break;
}
else
++round;
}
return round+1;
}
알맞은 코드 -> 더 간단히 수정됨
#include <iostream>
using namespace std;
/*
while문으로 계속 2로 나눈 몫으로 a,b의 숫자가 유지됨.
+ 항상 이긴다고 가정 -> 안만나는 경우는 x
출력 : round
*/
int solution(int n, int a, int b) {
int round = 0;
while (a != b) {
a = (a + 1) / 2; // == ceil(a/2)
b = (b + 1) / 2; // == ceil(b/2)
++round;
}
return round;
}
'코딩 테스트 > C++' 카테고리의 다른 글
| 프로그래머스, C++) Lv 2. 괄호 회전하기 (0) | 2025.11.18 |
|---|---|
| 프로그래머스, C++) Lv 2. 연속 부분 수열 합의 개수 (0) | 2025.11.08 |
| 프로그래머스, C++) Lv 2. 기능개발 (0) | 2025.11.04 |
| 프로그래머스, C++) Lv 2. 프로세스 (0) | 2025.11.04 |
| 프로그래머스, C++) Lv 2. 피로도 (0) | 2025.11.04 |