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