이숭간 공부기록
[프로그래머스] 파이썬 _ 예상 대진표 (토너먼트) 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/12985
문제유형 : 분할정복?
문제풀이 :
- 내가 속해있는 팀을 구한다.
- 걔와 나는 언제 만나는가? --> 서로 같은 팀이 될때 만난다.
- 두 사람이 같은 팀에 속해질때 까지 팀구하기를 반복한다.
정답코드:
def solution(n,a,b):
answer = 0
x = min(a,b)
y = max(a,b)
while True:
answer +=1
x = find_team(x)
y = find_team(y)
if x==y:
return answer
def find_team(n):
return (n+1)//2
잘못생각한 코드:
코드를 번잡하게 짜지말것, 앞에서 한번하고 그다음부터 while이렇게 하지말고 while로 모든 조건을 검색할수있도록 하자
꼭 마지막에 만나지는것이 아니다!!! 현재 둘이 속해있는팀이 3,4이면 그다음턴에 바로 만나게되므로 이조건은 무한루프를 유발한다...
1,2일때를 체크하는것이아니라그냥 팀이 같아질때까지 쭉 확인하면 되자낭...
def solution(n, a, b):
answer = 1
x = min(a, b)
y = max(a, b)
x = find_team(x)
y = find_team(y)
if x == y:
return 1
while True:
answer += 1
x = find_team(x)
y = find_team(y)
if x == 1 and y == 2:
break
return answer + 1
def find_team(n):
return (n+1)//2
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 _ 게임 맵 최단거리 (0) | 2021.08.03 |
---|---|
[프로그래머스] 파이썬 _ 조이스틱 (0) | 2021.08.03 |
[프로그래머스] 파이썬 _ 구명보트 (0) | 2021.07.18 |
[프로그래머스] 파이썬 _ 프렌즈4블록 (2018 KAKAO BLIND) (0) | 2021.07.16 |
[프로그래머스] 파이썬 _ 영어 끝말잇기 (0) | 2021.07.15 |