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)