728x90
⬛ 프로그래머스 | LV.2 예상 대진표 - 단순 구현 문풀
https://school.programmers.co.kr/learn/courses/30/lessons/12985
입출력 예
💚나의 풀이
- 처음에는 트리 형태로 뻗어가나 ? 쭉 타고 올라가서 Lv이 같아질 때 lv 값을 리턴해야 하나 ? 그런 생각으로 접근을 했다.
- 그냥 단순 구현 문제이다.
- A와 B는 반드시 올라간다고 생각을 하고, 매 라운드에서 N이 반으로 줄어들면서 소속 팀이 재배정(a/2) 된다.
- 여기서 하나의 규칙적인 수식이 파생되는데 이걸 유추할 수 있어야 풀 수 있는 문제이다.
똑같이 N = 8인데, A = 1, B = 2 인 경우를 생각해보자.
아래와 같은 형태로 게임 라운드가 진행될 거다.
1 : 3 라운드
1 2 : 2 라운드
(1 2) (3 4) : 1 라운드
(1 2) (3 4) (5 6) (7 8) : 시작
A = 1이고, B = 2 이면 첫 1라운드에서 바로 겨루니까
다음 라운드에서 누가 이기든 배정받는 번호는 1이어야 한다.
A = A / 2 + A % 2; => 1 = 1/2 + 1% 2 = 0 + 1 = 1
B = B / 2 + B % 2; => 2 = 2/2 + 2& 2 = 1 + 0 = 1
둘은 다음 라운드에서 누가 이기든 1로 재배정 받는다.
그리고 answer는 반복 횟수 1회만에 겨룬 상태이므로 1이 되어 return 된다.
💚 나의 코드
import java.util.*;
class Solution{
//솔루션 함수
public int solution(int n, int a, int b){
int answer = 0;
while(true){
a = a /2 + a % 2;//다음 a가 배정받는 번호임
b = b /2 + b % 2;//다음 b가 배정받는 번호
answer++;
if(a==b) break; //재배정 번호가 같다 == 겨룬다는 의미이므로 break
}
return answer;
}
}
728x90
'코딩 테스트 [준비] > [문풀] 프로그래머스_문풀_조지기' 카테고리의 다른 글
프로그래머스 | LV.2 괄호 회전하기 - Stack 활용 문풀 (Java) (1) | 2023.12.19 |
---|---|
프로그래머스 | LV.2 의상 - HashMap & 경우의 수 문풀 (Java) (0) | 2023.12.18 |
프로그래머스 | LV.2 영어 끝말잇기 - HashMap 활용 (Java) (3) | 2023.12.06 |
프로그래머스 | LV.2 짝지어 제거하기 - Stack 활용 (Java) (5) | 2023.12.04 |
프로그래머스 | LV.3 섬 연결하기 - 최소비용 신장 트리 (Java) (0) | 2023.07.20 |