4396 지뢰찾기
업데이트:
1. 문제
문제는 링크에 들어가면 있다.
2. 정답 코드
문제의 내 정답 코드는 다음과 같다.
n = int(input())
# 먼저 맵을 받자
bomb_graph = []
for _ in range(n):
bomb_graph.append(list(input()))
move_graph = []
for _ in range(n):
move_graph.append(list(input()))
new_map = [["." for _ in range(n)] for _ in range(n)]
# 2중 for문을 돌면서 주변을 탐색하고 지뢰의 수를 계산해서 해당 칸에 넣자.
# 단, 지뢰를 만났을 경우엔 다음 row로 넘어가기
# 상 우상 우 우하 하 좌하 좌 좌상
dr = [-1,-1,0,1,1,1,0,-1]
dc = [0,1,1,1,0,-1,-1,-1]
bomb_switch = False
for r in range(n):
for c in range(n):
ask_move = move_graph[r][c]
if ask_move == "." :
# 가지 않은 곳이니 넘어가자.
continue
else :
# 간 곳이므로 알고리즘 실행
# 지뢰를 밟았는지 확인만 하자
if bomb_graph[r][c] == "*":
bomb_switch = True
# 주변에 8좌표를 확인해야한다.
bomb_count = 0
for k in range(8):
next_r = r+dr[k]
next_c = c+dc[k]
if 0<= next_r < n and 0<= next_c < n :
if bomb_graph[next_r][next_c] == "*":
bomb_count+=1
new_map[r][c] = str(bomb_count)
if bomb_switch :
for r in range(n):
for c in range(n):
ask_bomb = bomb_graph[r][c]
if ask_bomb == "*":
new_map[r][c] = "*"
for j in range(n):
print(''.join(new_map[j]))
3. 풀이 및 생각
문제 풀이
말 그대로 구현을 하면 되는 문제이다. 단, 주의해야할 점은 폭탄을 밟았을 경우 모든 지뢰를 맵에 표시해야한다는 것이다.
나의 생각
-