728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12985
문제 설명
풀이 방법
처음엔 반복문으로 계속 카운팅하며 로직을 세웠는데, 공식을 이용하면 쉽게 구할 수 있을 것 같아 패턴을 찾으려고 했습니다.
8명이 참가했을 때
[1, 2, 3, 4, 5, 6, 7, 8] 번호를 받게됩니다.
계산을 통해 아래와 같이 다음 라운드에 대진 번호를 구할 수 있습니다.
[1, 1, 2, 2, 3, 3, 4, 4] -> 1번과 2번은 누가 이기든 다음 라운드 1번 대진에, 3번과 4번은 다음 라운드에 2번 대진에 속합니다.
계산 방법은 ( 번호 + 1 ) / 2 입니다.
1번 참가자 : ( 1 + 1 ) / 2 = 1번 대진
2번 참가자 : ( 2 + 1 ) / 2 = 1번 대진
3번 참가자 : ( 3 + 1 ) / 2 = 2번 대진
4번 참가자 : ( 4 + 1 ) / 2 = 2번 대진
...
이런식으로 다음 대진을 구할 수 있습니다.
해당 공식을 활용하여 a와 b에 대진 번호가 같아질 때 까지 반복해주면 됩니다.
내 코드(JAVA)
class Solution {
public int solution(int n, int a, int b) { // a=4, b=7
int answer = 0;
while (a != b) {
answer++;
a = (a + 1) / 2; // [4] -> 2 -> 1 -> 1
b = (b + 1) / 2; // [7] -> 4 -> 2 -> 1
}
return answer; // 3
}
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] 카드 뭉치 (0) | 2024.07.20 |
---|---|
[프로그래머스/JAVA] 할인 행사 (0) | 2024.07.20 |
[프로그래머스/JAVA] 붕대감기 (0) | 2024.04.09 |
[LeetCode/JAVA] 20. Valid Parentheses (0) | 2023.12.03 |
[프로그래머스/JAVA] [PCCE 기출문제] 10번 / 데이터 분석 (1) | 2023.11.28 |
댓글