티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/12985
- 해설 :
N명의 사람들이 토너먼트 대회를 진행하는데 A라는 사람과 B라는 사람이 있고, 모든 경기를 이긴다고 가정했을 때, 몇 번의 경기를 거쳐야 서로 만날 수 있는지 찾는 문제이다.
- 풀이 :
우선, 둘은 모든 경기에 이긴다고 가정했으므로 반드시 만나는 것이 보장되어있다. 따러서 while문을 사용해도 무한루프가 돌일은 없고, while문 안에서 정답을 찾는 조건만 잘 설정하면 되었다. 3번과 4번 사람이 경쟁해서 누군가 이긴다면, 그 사람은 다음 강에서 2번을 받게 된다. 따라서 n+1을 2로 나눈 몫이 다음번의 번호이다, 이 두 번호가 같아질 때까지 a,b 값을 변화시켜주며 answer를 카운팅해주었다.
1 2 3 4 5 6 7 8 | def solution(n,a,b): answer = 1 while (a+1)//2 != (b+1)//2: a = (a+1)//2 b = (b+1)//2 answer += 1 return answer | cs |
320x100
'Algorithm > Math' 카테고리의 다른 글
(Python) - 프로그래머스 : 나머지가 1이되는 수 찾기 (0) | 2022.01.21 |
---|---|
(Python) - 프로그래머스 : 최소직사각형 (0) | 2022.01.21 |
(Python) - 프로그래머스 : 3진법 뒤집기 (0) | 2022.01.19 |
(Python) - 프로그래머스 : 약수의 개수와 덧셈 (0) | 2022.01.19 |
(Python) - 프로그래머스 : 폰켓몬 (0) | 2022.01.18 |
댓글
© 2022 WonSeok, All rights reserved