20210812 TIL

업데이트:

백준 단계별로 풀어보기 10단계 중 예제 3단계 풀기

2447번 문제를 풀었다.

프랙탈 구조로 별을 찍는 문제로, 재귀 함수를 사용해야 했다.

2차원 리스트의 값을 다루는데

2차원으로 인덱스에 접근하여 값을 할당하려고 해서 잘 안 됐다.
한 번에 한 줄씩 접근해서 값을 할당하니 해결됐다.


무슨 말이냐 하면, 2차원 리스트 block를 9*9 리스트로 만들어서 1로 채웠다고 했을 때,

block = [[1 for i in range(9)] for j in range(9)]

block =[ [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1] ]



block의 3*3 영역에 접근하여 값을 지정하는 건 안 된다.

block[:3][:3] = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] # 이렇게 쓸 수 없다.  

block = [
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1]
]

block[:3][:3] 영역의 값이 안 바뀐다.



대신 한 줄에 하나씩 접근하여 값을 지정할 수 있다.

for i in range(3):
    block[i][:3] = [0, 0, 0]

block = [
[0, 0, 0, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1]
]

block[:3][:3] 영역의 값이 바뀐다!

오늘 백준 풀이는 3단계까지만 한다.


GitHub에 올린 소스 코드는 아래에 있다.
level3-2447-별찍기10.py

태그: ,

카테고리:

업데이트: