문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
생각보다 구현하는데 애를 먹었던 문제였습니다. 단순히 가장 빠르게 모든 사람이 계단을 통해 빠져 나갈 수 있는 시간을 구하는 것이 목표입니다. 이 정도 문제는 막힘없이 풀어야할텐데 걱정이 좀 되네요. 디버깅도 해야하고 여러가지 테스트하는 시간까지 고려해야하는데 구현하는데 걸리는 시간을 줄여야할 것 같습니다.
dfs와 시뮬레이션으로 풀었습니다. 먼저 dfs로 각 사람들이 어느 계단으로 이동할 것인지를 결정합니다. 그정보를 바탕으로 사람들을 직접 움직여보는 것입니다. 각 계단을 이용하기로한 사람들을 추려내서 계단까지의 거리를 벡터에 저장해둡니다. 그리고 1초가 지날때마다 1씩 줄여줍니다. 만약 값이 0이 되면 계단에 도착한 것이므로 s_cnt를 늘려서 계단 입구에 도착한 사람을 늘려줍니다. 그리고 3사람씩 내려갈 수 있으므로 크기가 3인 st배열을 이용하여 내려가고 있는 사람이 3명보다 적으면 s_cnt를 하나 줄이고 계단을 내려가데 걸리는 시간을 세팅해줍니다.
이런식으로 모든 사람이 다 계단을 통해 내려가게 되면 계단1과 계단2를 통해 내려가는 시간이 계산됩니다. 이 둘중 큰 값이 모든 사람이 내려가는데 걸린 시간이므로 이 값이 최소가 되는 경우를 찾으면 됩니다.
'문제 해결 > SWEA' 카테고리의 다른 글
[SWEA] 4008. 숫자 만들기 (0) | 2020.01.05 |
---|---|
[SWEA] 2477. 차량 정비소 (0) | 2020.01.04 |
[SWEA] 2382. 미생물 격리 (0) | 2020.01.02 |
[SWEA] 2117. 홈 방범 서비스 (0) | 2020.01.02 |
[SWEA] 2115. 벌꿀채취 (0) | 2019.12.30 |