inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

봉우리 문제에서 0으로 감쌀때 이런식으로 하는건안되나요?

193

BH J

작성한 질문수 36

0

n = int(input())
# 5
l = [[0]*(n+2)]*(n+2)
a = [list(map(int, input().split())) for _ in range(n)]
'''
5 3 7 2 3 3 7 1 6 1 7 2 5 3 4 4 3 6 4 1 8 7 3 5 2
'''
for i in range(n):
    for j in range(n):
        l[i+1][j+1]=a[i][j]
   

 

5x5로 받아준 2차원 행렬을 0으로 감싸고싶어서 

for문돌려서 저런식으로했는데 값이 이상해서 for문안에서찍어보니

print(i, j, l[i+1][j+1], a[i][j], sep=', ')

0, 0, 0, 5

0, 1, 0, 3

0, 2, 0, 7

0, 3, 0, 2

0, 4, 0, 3

 

1, 0, 5, 3

1, 1, 3, 7

1, 2, 7, 1

1, 3, 2, 6

1, 4, 3, 1

 

2, 0, 3, 7

2, 1, 7, 2

2, 2, 1, 5

2, 3, 6, 3

2, 4, 1, 4

 

3, 0, 7, 4

3, 1, 2, 3

3, 2, 5, 6

3, 3, 3, 4

3, 4, 4, 1

 

4, 0, 4, 8

4, 1, 3, 7

4, 2, 6, 3

4, 3, 4, 5

4, 4, 1, 2

이런식으로 나오는데 원래 

l = [[0]*(n+2)]*(n+2)

이런식으로 리스트 생성하면 칼럼 전부 다같이 변하나요????

느낌으로는 주소 참조 형식때문인것같은데

리스트 l을 만들때 저런식으로만들면안되고 그냥 하나하나 0을찍어야할까요?

python 코테 준비 같이 해요!

답변 1

0

김태원

안녕하세요^^

l = [[0]*(n+2)]*(n+2)

 

위와 같이 2차원을 만들면 첫 번째 행을 반복해서 얕은복사되는 것이라 첫행을 바꾸면 모든 행이 바뀌는 일이 일어납니다.

 

 

 

 

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

104

2

스택에서 ')'을 만나는 경우

0

108

3

문제가 어디있나요?

0

86

2

변수 or 함수명

0

76

1

침몰하는 타이타닉 문제 질문입니다

0

71

1

AA.py 책점 에러

0

63

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

115

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

115

1

아나그램 비교 코드

0

123

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

163

2

문제 링크가있나여?

0

153

2

채점기 Time Limit Exceeded 오류 문의

1

177

2

동적계획법은 사용하는 문제

0

132

2

제 코드 좀 봐주세요

0

154

1

예외가 존재할 가능성?

0

100

1

3번이 안풀립니다

0

98

0

5번 틀림

0

124

0

오류원인?

0

104

0

리스트 선언

0

115

1

침몰하는 타이타닉(그리디) 문제 질문

0

114

1

알고리즘

0

72

1

코딩테스트

0

98

1

DFS 순서 질문드립니다.

0

134

2

left, right를 사용한 풀이법에 대한 질문입니다

0

94

1