본문 바로가기
프로그래밍/python

[python] for문에서 index 값 수정하기

by 잇서니 2021. 2. 17.
반응형

 

 

   	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의 특징이니 염두해두자!

 

 

반응형

댓글