a9484767   2년 전

save = []
for i in range(9):
    n = int(input())
    save.append(n)
maximum = save[0]
count = 0
for i in range(9):
    if save[i]>maximum:
        maximum = save[i]
        count = i
print(maximum)
print(count+1)

위에는 제가 작성한 코드인데요... 이렇게 했을 때는 정답으로 인식이 되었습니다.

그런데 위의 코딩은 제가 처음 제출한 코딩이 아닙니다. 

처음에 제출한 코드는 아래와 같습니다.

save = []
for i in range(9):
    n = int(input())
    save.append(n)
maximum = save[0]
for i in range(9):
    if save[i]>maximum:
        maximum = save[i]
        count = i
print(maximum)
print(count+1)

거의 똑같은 것처럼 보이죠? 

두 개의 차이점은 중간의 count = 0의 유무입니다.

그런데 아래의 코드는 제출하면 런타임 에러가 뜨고

위의 코드는 제출하면 정답으로 인정됩니다.

왜 count = 0의 유무가 정답과 에러를 가른 것일까요?

제 생각에는 count = 0이 없어도 큰 문제가 없을 것 같은데요,

제가 파이참을 통해서 코드를 똑같이 작성해보았는데요.

런타임 에러가 뜨는 아래의 것은 파이참에서 경고문이  
Name 'count' can be undefined라고 표시됩니다.

백준에서 정답으로 인정되는 위의 것은 그러한 경고문이 표시되지 않습니다.

제가 파이썬 초보라 그런지 왜 Name 'count' can be undefined과 같은 경고문이 뜨는지, 그리고 왜 런타임 에러가 뜨는지 

이해가 안되네요..ㅜㅠ 

질문 요약 : 2번째 코드는 왜 런타임 에러가 뜰까, 그리고 파이참 기준으로 왜 Name 'count' can be undefined라는 경고문이 뜰까

ghghgh777   2년 전

두 코드 모두 save[i] > maximum일 때 count의 값을 재설정한다는 점은 동일합니다.

그렇다면 모든 i에 대해서 save[i] <= maximum이면 for문 이후 count 값은 몇일까요?

a9484767   2년 전

아... 그러면 count 값이 아예 없는 것으로 처리돼서 오류가 나겠네요...! 그래서 파이참에서도 can be undefined라고 한것이고... 런타임 에러도 난걸로 유추할 수 있겠네요 

떙큐 베리 마치 ^^

댓글을 작성하려면 로그인해야 합니다.