jun-wiki

View My GitHub Profile

Posts (Latest 10 updated) :
Read all
Contents:
  1. 문제
  2. 코드



TIL 쓰는 건 의외로 유쾌한 일이다


글 쓰는게 생각보다 적성에 맞는게 아닐까란 생각이 들 정도로


그치만 녹록치 않은 시간 탓에 쉽지 않다


그도 그럴 것이 피곤한 몸을 뉘거나 간단히 여가 시간 보내기
vs
하루 공부한 거 정리해서 글쓰기일때


후자 고르는 놈은 상당히 가식적이거나 머리 어딘가 성치 않을 게 분명하다


후자 고르고 전자처럼 행동하거나


그런면에서 TIL 꾸준히 쓰기란 어렵다


그래도 할건 해야지


오늘의 TIL : 암흑 군주 이민혁


문제

암흑군주 이민혁의 공격으로부터

고슴도치가 죽을 지 살지 예측하는 문제다

자세한건 링크

🔽🔽🔽🔽🔽🔽

고슴도치 방관하러 가기

🔼🔼🔼🔼🔼🔼

코드

import sys
from collections import deque
input = sys.stdin.readline

# R행 C열
R, C = map(int, input().split())

# 숲 전체 기록
forest = [list(input().strip()) for _ in range(R)]

# 무빙 방향 정해주기
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]

# 고슴도치와 물 위치 기록용
run = deque()
flood = deque()

# 고슴도치 왔던 길 중복 체크
visited = [[False]*C for _ in range(R)]

# BFS 시작
for y in range(R):

    # 물과 고슴 시작 위치
    for x in range(C):
        if forest[y][x] == 'S':
            run.append((y, x, 0))
        elif forest[y][x] == '*':
            flood.append((y, x))

# 고슴도치 도망 성공하거나 실패할때까지
while run:

    # 물 먼저 이동 시작
    for _ in range(len(flood)):
        # 위치
        f_y, f_x = flood.popleft()
        for f_dir in range(4):
            nf_x = f_x + dx[f_dir]
            nf_y = f_y + dy[f_dir]
            # 범위 체크
            if 0 <= nf_x < C and 0 <= nf_y < R:
                # 이동 가능 체크
                if forest[nf_y][nf_x] == '.':
                    # 물로 바꾸기
                    flood.append((nf_y, nf_x))
                    forest[nf_y][nf_x] = '*'

    # 고슴 이동 시작
    for _ in range(len(run)):
        # 위치와 시간
        h_y, h_x, t = run.popleft()
        for h_dir in range(4):
            nh_y = h_y + dy[h_dir]
            nh_x = h_x + dx[h_dir]
            # 범위 체크
            if 0 <= nh_x < C and 0 <= nh_y < R:
                # 이동 가능 및 중복 체크
                if forest[nh_y][nh_x] == '.'and not visited[nh_y][nh_x]:
                    # 고슴도치 이동 및 시간 기록
                    visited[nh_y][nh_x] = True
                    run.append((nh_y, nh_x, t+1))
                # 고슴도치 탈출 및 시간 출력
                elif forest[nh_y][nh_x] == 'D':
                    print(t + 1)
                    exit()

# 고슴도치 선인장 행
print('KAKTUS')

꽤 길다 주석 달았으니 알아서 봐라

앞으론 이런식으로 TIL날먹 할 수도 있을 거 같다

에지간해선 지금보다 신경 쓰겠다만

문제가 많아 바쁠 경우 지금처럼 푼문제 간단 요약하겠다

아니면 좀 더 길게 요약하거나