제가 이 문제를 풀어보진 않았지만 리스트 초기화는
smell = [[[0,0]] * n for _ in range(n)] 대신
smell = [[[0,0] for _ in range(n)] for _ in range(n)] 를 써주셔야 합니다.
asterisk를 사용하면 주소 값만 복사하기 때문에 결과가 기대했던 것과 다르게 나옵니다.
아래 코드를 참고해 주세요.
참고로 immutable한 tuple이나 int, string 등은 상관 없어서
smell = [[[0]*2 for _ in range(n)] for _ in range(n)] 는 가능합니다.
lss9209 2년 전
저는 유명 풀이를 참고해서 냄새정보를 위치[i][j]별로 상어종류, 냄새 남은 초를 각각 원소로 하는 배열을 또 원소로 같는 삼중배열을 만들어 풀었는데요.
정말 이해가 안가는 게
smell[i][j] = [상어종류, 냄새 남은 초];로 처리하면 정답판정을 받는데
smell[i][j][0] = 상어종류; smell[i][j][1] = 냄새 남은 초;로 저 위에 코드를 대체하면 오답판정(틀렸습니다)을 받습니다.
(코드에서 21라인 부분입니다.)
제가 코테푼다고 좀 급하게 파이썬을 익혀서 언어적인 기초가 부족하긴 한데 제 지식에서는 저 두개는 완전 똑같거든요....
혹시 이거 왜 이런줄 아시는 분 답변주시면 제 감사하겠습니다.