반응형
프로그래머스: 예상 대진표
문제풀러가기
https://programmers.co.kr/learn/courses/30/lessons/12985?language=python3
코딩테스트 연습 - 예상 대진표
△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N
programmers.co.kr
문제 분석
1. N이 2의 제곱과 관련되어 있기 때문에, 2와 관련된 규칙이 있을것이라 생각했습니다.
2. 규칙을 찾기위해 대진표에서 2를 나눈후, 몫과 나머지를 비교해 보았습니다.
찾은 규칙은 아래와 같습니다.
무슨 규칙인지 발견하셨나요??
문제에서, 1<->2 번끼리 겨뤘을때 이기면 1이 되고,
3<->4번 끼리 겨뤄서 이겼을때는 2가되고,
5<->6번 끼리 겨뤄서 이겼을때는 3이 된다고 했습니다.
위 그림과 같이 몫과 나머지를 더해주면, 이겼을때, 그 다음 얻는 번호를 알 수 있습니다.
그러므로, 같은 번호를 얻기 전까지 while문을 돌려주면 됩니다.
코드
def solution(n,a,b):
cnt=0
while True:
a= (a//2)+(a%2)
b= (b//2)+(b%2)
cnt+=1
if a==b:
break
return cnt
코드를 조금 더 깔끔하게 정리하면,
코드 (위와 같은 코드)
def solution(n,a,b):
cnt=0
while a!=b:
a,b= (a//2)+(a%2), (b//2)+(b%2)
cnt+=1
return cnt
<잡담>
프로그래머스 Lv2를 풀때, 어려운 문제도 많고, 구현하기 귀찮은 문제도 많아 현타가 왔었습니다.
그런데 이번 문제는 쉬어가는 문제라서 잠깐이나마 힐링을 했네요... ㅠ_ㅠ
사실 실력이 늘었는지 안늘었는지도 잘 모르겠지만, 늘고 있는거겠죠...! ㅠㅠ
여기까지 오신분들, 프로그래머스 Lv5에 도달하는 날이 올때까지 같이 화이팅해요 ;)
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/034.gif)
반응형
'코딩테스트 > 코딩테스트 문제' 카테고리의 다른 글
코딩테스트 준비 - 프로그래머스: 튜플/2019 카카오 개발자 겨울 인턴십 풀이 (파이썬) (0) | 2021.07.02 |
---|---|
코딩테스트 준비 - 프로그래머스:메뉴 리뉴얼 풀이/Counter,combinations (파이썬) (0) | 2021.07.02 |
코딩테스트 준비 - 프로그래머스: 괄호 변환 풀이/재귀함수 문제 (파이썬) (2) | 2021.07.01 |
코딩테스트 준비 - 프로그래머스: 행렬 테두리 회전하기 풀이(파이썬) (2) | 2021.06.30 |
코딩테스트 준비 - 프로그래머스:뉴스 클러스터링 풀이/isalpha() (파이썬) (0) | 2021.06.29 |
댓글