문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12985

제한 사항

입출력 예

풀이
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
boolean isFlip = false;
if (a > b) {
int temp = a;
a = b;
b = temp;
}
for (int i = 1; i <= n;) {
answer = (isFlip) ? answer - 1 : answer + 1;
if (a <= i && (i < b && b <= i * 2)) return answer;
else {
if ((i < a && a <= i * 2) && (i < b && b <= i * 2)) {
int tempB = b;
b = i * 2 - a + 1;
a = i * 2 - tempB + 1;
isFlip = true;
}
i = (isFlip) ? i / 2 : i * 2;
}
}
return answer;
}
}
후기
너무 생각을 많이 해서 어렵게 푼 것 같다... 그냥 라운드 한 번 할 때마다 a와 b를 2로 나누어 주면 된다. 그럼 a가 7과 같이 홀수일 때는 어떻게 하면 될까? a가 7이던 8이던 무조건 a가 승리하기 때문에 a가 8이라고 생각해도 된다. 여기까지 생각했으면 다 푼 것이나 다름없다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] 문자열 내림차순으로 배치하기 (0) | 2023.08.22 |
|---|---|
| [프로그래머스][JAVA][Lv. 1] 문자열 다루기 기본 (0) | 2023.08.22 |
| [프로그래머스][JAVA][Lv. 2] 점프와 순간 이동 (0) | 2023.08.21 |
| [프로그래머스][JAVA][Lv. 1] 서울에서 김서방 찾기 (0) | 2023.08.20 |
| [프로그래머스][JAVA][Lv. 1] 수박수박수박수박수박수? (0) | 2023.08.16 |