반응형
for i in range(1,n+1):
if arr[x[i]][y[i]] == 0 : arr[x[i]][y[i]] = i #해당 자리에 아무도 없는 경우
else:
if age[arr[x[i]][y[i]]] < age[i] :
age[arr[x[i]][y[i]]] = age[i] #나중에 들어온 사람 나이가 더 많은 경우
remove(i)
i -= 1 #i번째 사람 다시 한 번 확인
i가 3일때 else문에 들어왔다고 해보자.
그러면 i -= 1을 통해 i값이 1 감소되어 2가 된다.
그러면 그 다음 반복문에서 i값이 1 증가하니 3이 될 줄 알았다.
그러나 python에서는 원래 반복문대로 i가 4가 된다. 즉 i -= 1 의 효과가 없는 것이다.
c++에서는 우리가 생각하는대로 i가 3이 된다.
i = 1
while i <= n:
if arr[x[i]][y[i]] == 0 : arr[x[i]][y[i]] = i #해당 자리에 아무도 없는 경우
else:
if age[arr[x[i]][y[i]]] < age[i] :
age[arr[x[i]][y[i]]] = age[i] #나중에 들어온 사람 나이가 더 많은 경우
remove(i)
i -= 1 #i번쨰 사람 다시 한 번 확인
# (for range 사용하면 안됨! c++이랑 쫌 다름. i가 -1해도 다음 for문 타게 됨.)
i += 1
그래서 for문을 사용하지 않고, while문으로 대체했다.
아놔 이것 때문에 죙일 왜 안되나 스트레스 받았다.
무튼 python의 특징이니 염두해두자!
반응형
'프로그래밍 > python' 카테고리의 다른 글
[python] 배열 복사하기 (2) | 2021.02.23 |
---|---|
[python] python으로 구글번역기 사용하기 (8) | 2020.10.14 |
[python] 영어 대문자/소문자 변환하기 (링크) (8) | 2020.10.14 |
[python] 파이썬 정렬, 조건 여러개 한 번에 정렬하기 (2) | 2020.02.05 |
[python] 리스트 인덱스 슬라이싱 (4) | 2020.01.18 |
댓글