백준 / 토너먼트 / 1057

6192 단어 백준pythonlooploop

Question

문제링크
Silver 3

Logic

기본 구조 : loop
1. 인원 수만큼 1을 채워 리스트를 만든다
2. 두 사람의 위치를 0으로 마크한다.
3. 반복문을 2개씩 끊어 비교한다.
4-1. 1번만 0일 경우 0을 추가.
4-2. 2번만 0일 경우 0을 추가.
4-3. 둘 다 0일 경우 스위치 변수를 이용해 두 반복문 종료.
4-4. 셋 모두 아닐 경우 1을 추가.
5. 반복문이 종료될 때 까지 level + 1
6. level 출력.

Code

from sys import stdin

N,a,b = map(int,stdin.readline().rstrip().split())
data = [1 for _ in range(1,N+1)]
data[a-1] = 0
data[b-1] = 0
level = 1
end = False

while True:
    tmp = []
    N = len(data)
    for i in range(0,N,2):
        if N%2==1 and i==N-1 : tmp.append(data[-1])
        elif data[i] == 0 :
            if data[i+1]== 0 :
                end = True
                break
            else : tmp.append(0)
        elif data[i+1] == 0 : tmp.append(0)
        else : tmp.append(1)
    if end : break
    data = tmp[:]
    level += 1

print(level)

좋은 웹페이지 즐겨찾기