lss9209   2년 전

저는 유명 풀이를 참고해서 냄새정보를 위치[i][j]별로 상어종류, 냄새 남은 초를 각각 원소로 하는 배열을 또 원소로 같는 삼중배열을 만들어 풀었는데요.

정말 이해가 안가는 게

smell[i][j] = [상어종류, 냄새 남은 초];로 처리하면 정답판정을 받는데

smell[i][j][0] = 상어종류; smell[i][j][1] = 냄새 남은 초;로 저 위에 코드를 대체하면 오답판정(틀렸습니다)을 받습니다.

(코드에서 21라인 부분입니다.)

제가 코테푼다고 좀 급하게 파이썬을 익혀서 언어적인 기초가 부족하긴 한데 제 지식에서는 저 두개는 완전 똑같거든요....

혹시 이거 왜 이런줄 아시는 분 답변주시면 제 감사하겠습니다.

hanabisuri   2년 전

제가 이 문제를 풀어보진 않았지만 리스트 초기화는

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년 전

감사합니다. 어떤 원리인지 감을 잡았습니다!

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