728x90
> Unit.23 2차원 리스트 사용하기 <
- 2차원 리스트 생성
2차원 리스트는 가로×세로로 이루어져 있으며 행(row)과 열(column) 모두 0부터 시작한다.
2차원 리스트의 요소에 접근하거나 값을 할당할 때는 리스트 뒤에 [ ](대괄호)를 두 번 사용해서 [ ] 안에 세로(row) 인덱스와 가로(column) 인덱스를 지정한다.
- 반복문 사용하여 2차원 리스트의 요소를 모두 출력하기
for문을 두 번 사용해서 2차원 리스트의 요소를 모두 출력할 수 있다.
for range로 세로, 가로 크기를 넣으면 인덱스로 사용할 수 있다.
a = [[10, 20], [30, 40], [50, 60]]
for i in range(len(a)): #i는 세로 크기
for j in range(len(a[i])): #j는 가로 크기
print(a[i][j], end=' ') #요소 접근
print()
>>> 10 20
30 40
50 60
while문을 한 번만 사용하여 2차원 리스트의 요소를 출력할 수도 있다.
a = [[10, 20], [30, 40], [50, 60]]
i = 0
while i < len(a): #반복할 때 리스트의 세로 크기를 사용
x, y = a[i] #요소 두 개를 한꺼번에 가져옴
print(x, y)
i += 1 #인덱스를 1 증가시킴
>>> 10 20
30 40
50 60
while문을 두 번 사용하여 2차원 리스트의 요소를 출력하는 방법은 for문과 거의 동일하다.
a = [[10, 20], [30, 40], [50, 60]]
i = 0
while i < len(a): #i는 세로 크기
j = 0
while j < len(a[i]): #j는 가로 크기
print(a[i][j], end=' ')
j += 1 #가로 인덱스를 1 증가시킴
print()
i += 1 #세로 인덱스를 1 증가시킴
>>> 10 20
30 40
50 60
23.7 심사문제 : 지뢰찾기
이 심사문제는 지금까지 심사 문제 중 가장 어렵다고 되어있었다. 역시나 어려웠고 나름대로 코드를 짰고 실행도 잘 되었는데 점수는 0점이었다. 입력 받는 부분이 코딩도장에서 원하는 방식이 아니라 점수를 받지 못한 것 같다.
row, col = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
print()
row, col = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
print()
for i in range(row):
for j in range(col):
cnt = 0
if matrix[i][j] == ".":
if i != 0 and j != 0:
if matrix[i-1][j-1] == "*": cnt += 1
if i != row-1 and j != col-1:
if matrix[i+1][j+1] == "*": cnt += 1
if i != 0:
if matrix[i-1][j] == "*": cnt += 1
if i != 0 and j != col-1:
if matrix[i-1][j+1] == "*": cnt += 1
if j != 0:
if matrix[i][j-1] == "*": cnt += 1
if i != row - 1 and j != 0:
if matrix[i+1][j-1] == "*": cnt += 1
if j != col -1:
if matrix[i][j+1] == "*": cnt += 1
if i != row -1:
if matrix[i+1][j] =="*": cnt += 1
matrix[i][j] = cnt
print(matrix[i][j], end="")
else:
print(matrix[i][j], end="")
print()
#위의 코드를 좀 더 간단하게 바꾼 버전
row, col = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
print()
for i in range(row):
for j in range(col):
cnt = 0
if matrix[i][j] == ".":
for y in range(i-1, i+2):
for x in range(j-1, j+2):
if not (y < 0 or x < 0 or y >= row or x >= col):
if matrix[y][x] == "*":
cnt += 1
matrix[i][j] = cnt
print(matrix[i][j], end="")
else:
print(matrix[i][j], end="")
print()
https://github.com/YOOHYOJEONG/dojang_python
728x90