Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                            Tags
                            
                        
                          
                          - 자바스크립트
 - re_lunchu
 - 토이프로젝트
 - 백준
 - programmers
 - 현대자동차
 - 스마트팩토리
 - Algorithm
 - softeer
 - alogorithm
 - 파이썬
 - 티스토리챌린지
 - 자바
 - 현대
 - boj
 - 알고리즘
 - Baekjoon
 - 힙큐
 - cim
 - Python
 - cs공부
 - 프로그래머스
 - 오블완
 - 탐욕법
 - 딥러닝
 - Java
 - GAN
 - 소프티어
 - heapq
 - JavaScript
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
eaz_coding
[Softeer] 동계 테스트 시점 예측 본문
문제
요약
바깥에서부터 유입되는 공기와 두면이 맞닿아 있는 얼음이 녹는데 1초가 걸릴 때,
얼음이 다 녹을 때까지 시간이 얼마나 걸리는가?
원본
https://softeer.ai/practice/6281
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
풀이
바깥에서부터 유입되는 얼음과 2면이 맞닿아 있어야 하는 건데
무작정 2면만 닿아있으면 되는 줄 알고 얼음이 있는 곳에서 면이 닿아 있는지를 판단해서 틀렸다.
문제를! 잘읽자!
import sys
from collections import deque
input = sys.stdin.readline
n, m = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(n)]
d = [(-1, 0), (1, 0), (0, 1), (0, -1)]
answer = 0
while max([max(arr[k]) for k in range(n)]) != 0:
    visited = [[0] * m for _ in range(n)]
    q = deque([(0,0)])
    visited[0][0] = 1
    while q:
        i, j = q.popleft()
        for di, dj in d:        
            ni, nj = i+di, j+dj
            if 0 <= ni < n and 0 <= nj < m:
                if arr[ni][nj]:
                    visited[ni][nj] += 1
                elif visited[ni][nj] == 0:
                    q.append((ni, nj))
                    visited[ni][nj] = 1
    for i in range(n):
        for j in range(m):
            if visited[i][j] >= 2:
                arr[i][j] = 0
    answer += 1
    
print(answer)
'eaz_algorithm' 카테고리의 다른 글
| [Softeer] 함께하는 효도 (2) | 2024.03.20 | 
|---|---|
| [Programmers] 다리를 지나는 트럭 (0) | 2024.03.19 | 
| [Softeer] 스마트 물류 (0) | 2024.03.15 | 
| [Softeer] 자동차 테스트 (0) | 2024.03.13 | 
| [Softeer] 조립라인 (0) | 2024.03.12 |