oh12sung   3년 전

2133 타일채우기 문제에서

2라인 -> d = [0] * (n+2)

6라인 -> for i in range(4, n+2, 2):

로 정하면 정답입니다.

그러나, 저는

2라인 -> d = [0] * (n+1)

6라인 -> for i in range(4, n+1, 2):

해도 정답이라 생각했지만 IndexError가 나왔습니다. 

혹시 제가 어떤 개념을 놓치고 있는 건가 해서 왜 둘이 다르게 출력되었는지 질문드립니다!

** 참고로, n+2 부분을 31로 해도 정답이더라구요. 한 끝 차이 같은데 이유를 모르겠습니다.

kc960923   2년 전

그냥 지나가는 사람인데,,

제가 생각했을 때는 n이 홀수로 주어졌을 때, for문에서 2칸 씩 돌리다보면 인덱스가 안맞을꺼 같습니다!

arietis   1년 전

2번째 줄에서 d = [0] * (n+1)로 두면, 코드 3번째 줄의 d[2] = 3에서 IndexError가 나옵니다.

n=1일 때는 d[2]가 정의되지 않고, d[1]까지의 값만 있기 때문입니다.

3번째 줄을 다음과 같이 바꾸시길 권장해 드립니다.

if n>1:

    d[2] = 3

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