Python

[Python] 파이썬 지뢰찾기 구현 (2차원 리스트)

현기 2022. 7. 27. 18:01

파이썬 코딩도장 23.7 심사문제 지뢰찾기 구현

 

* 문제설명

표준 입력으로 2차원 리스트의 가로(col)와 세로(row)가 입력되고 그 다음 줄부터 리스트의 요소로 들어갈 문자가 입력됩니다. 이때 2차원 리스트 안에서 *는 지뢰이고 .은 지뢰가 아닙니다. 지뢰가 아닌 요소에는 인접한 지뢰의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).
여러 줄을 입력 받으려면 다음과 같이 for 반복문에서 input을 호출한 뒤 append로 각 줄을 추가하면 됩니다(list 안에 문자열을 넣으면 문자열이 문자 리스트로 변환됩니다).

 

 

2차원 배열을 이용해서 배열의 범위를 벗어나지 않도록

잘 조건을 줘서 8방향을 탐색하면 되는 문제다.

row, col = map(int,input().split())

matrix = []
for i in range(row):
    matrix.append(list(input()))

for i in range(row):
    for j in range(col):
        cnt = 0
        if matrix[i][j] == '*':
            print('*',end='')
            continue
        
        # 위 3칸 탐색
        if i-1 >= 0:
            if matrix[i-1][j] == '*':
                cnt += 1
            if j>0:
                if matrix[i-1][j-1] == '*':
                    cnt += 1
            if j<col-1:
                if matrix[i-1][j+1] == '*':
                    cnt += 1

        # 아래 3칸 탐색
        if i < row-1:
            if matrix[i+1][j] == '*':
                cnt+=1
            if j>0:
                if matrix[i+1][j-1] == '*':
                    cnt += 1
            if j<col-1:
                if matrix[i+1][j+1] == '*':
                    cnt += 1
            
        # 좌우 탐색
        if j-1 >= 0:
            if matrix[i][j-1] == '*':
                cnt += 1
        if j<col-1:
            if matrix[i][j+1] == '*':
                cnt += 1
            
        print(cnt, end='')
    
    print()

 

 

 


참고 문헌 : 파이썬 코딩도장