https://www.acmicpc.net/problem/4396
4396번: 지뢰 찾기
지뢰찾기는 n × n 격자 위에서 이루어진다. m개의 지뢰가 각각 서로 다른 격자 위에 숨겨져 있다. 플레이어는 격자판의 어느 지점을 건드리기를 계속한다. 지뢰가 있는 지점을 건드리면 플레이어
www.acmicpc.net
1. 난이도 실버4
2. 내가 작성한 코드
지뢰가 있는 칸이 열렸다면 지뢰가 있는 모든 칸이 별표(*)로 표시되어야 한다. 다른 모든 지점은 온점(.)이어야 한다.
라는 조건이 있어서 "이미 열린 칸"을 포함해서 모두 온점으로 print했더니 틀렸다.
읭? 이라는 생각과 함께 질문게시판을 찾아보니 x에 대해서는(=이미 열린 칸에 대해서) 지뢰의 개수를 표시해줘야 한다고,,
암튼 수정해서 맞출 수 있었다 o(* ̄▽ ̄*)ブ
지뢰 게임 안 해봐서 그런가 ,, 18퍼센트에서 계속 틀린다면 이 글 참고해서 수정해보세요!
import sys
input = sys.stdin.readline
n = int(input().rstrip())
maps = [list(input().rstrip()) for _ in range(n)]
location = [list(input().rstrip()) for _ in range(n)]
check = True
for i in range(n):
for j in range(n):
if location[i][j] == "x" and maps[i][j] == "*":
check = False #폭탄을 만났을 경우 표시
elif location[i][j] == "x" and maps[i][j] == ".":
maps[i][j] = location[i][j]
dx = [-1,-1,-1,0,0,1,1,1]
dy = [-1,0,1,-1,1,-1,0,1]
if check == False: #폭탄을 만날 경우
for i in range(n):
for j in range(n):
if maps[i][j] == "x":
cnt = 0
for k in range(8):
nx = i + dx[k]
ny = j + dy[k]
if nx <0 or ny<0 or nx>=n or ny>=n:
continue
if maps[nx][ny] == "*":
cnt+=1
maps[i][j] = cnt
print(maps[i][j],end="")
print()
else: #폭탄을 만나지 않은 경우
for i in range(n):
for j in range(n):
if maps[i][j] == "x":
cnt = 0
for k in range(8):
nx = i + dx[k]
ny = j + dy[k]
if nx <0 or ny<0 or nx>=n or ny>=n:
continue
if maps[nx][ny] == "*":
cnt+=1
maps[i][j] = cnt
for i in range(n):
for j in range(n):
if maps[i][j] == "*":
maps[i][j] = "."
print(maps[i][j],end="")
print()
나는 지뢰가 열렸을 경우 check = False로 표시해준 후
False(지뢰가 열린 경우)면 지뢰를 그대로 출력
True(지뢰가 열리지 않은 경우)면 지뢰를 온점으로 바꿔서 출력
할 수 있게 나눴는다.
중복된 코드를 줄이고 싶으면 아래 링크를 참고하면된다.
https://ywtechit.tistory.com/124
[ 파이썬(python) ] 백준 4396 - 지뢰
📍 백준 4396 - 지뢰 백준 4396 - 지뢰 ⚡️ 나의 풀이 상당히 고생한 문제다. 이 문제를 맞히기 위해 정답을 얼마나 제출했는지 모르겠다. 난이도가 실버 5 였기 때문에 쉽게 풀 줄 알았는데 큰 코
ywtechit.tistory.com
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 20436번 ZOAC 3(python) (1) | 2023.04.17 |
---|---|
[백준] 1244번 스위치 켜고 끄기(python) (0) | 2023.04.15 |
[백준] 2578번 빙고(python) (0) | 2023.04.13 |
[백준] 20546번 🐜 기적의 매매법 🐜(python) (0) | 2023.04.13 |
[백준] 14467번 소가 길을 건너간 이유1(python) (0) | 2023.04.12 |
댓글