공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/코딩테스트 문제풀이

[Python] 백준 17142. 연구소 3

inspirit941 2019. 10. 29. 16:54
반응형

https://www.acmicpc.net/problem/17142

 

17142번: 연구소 3

인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시에 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는

www.acmicpc.net

삼성 SW역량테스트 기출문제였다고 한다.

 

BFS와 DFS를 모두 사용하는 문제라고 하는데,

Python에서는 '경우의 수'를 뽑아내는 내장함수인 combinations를 활용하면 한 줄로 해결할 수 있다.

 

일반적인 BFS로 문제를 풀면 채점 99% 단계에서 오답 처리가 된다.

오답을 만들어내는 반례는 https://mygumi.tistory.com/352 이곳에서 상세한 설명을 해 주셨다.

 

 

백준 17142번 연구소 3 :: 마이구미

이 글은 백준 알고리즘 문제 17142번 "연구소 3" 를 풀이한다. 삼성 SW 역량 테스트 문제이다. 문제 해결을 위해 DFS, BFS 2가지 모두 요구한다. 문제 링크 - https://www.acmicpc.net/problem/17142 DFS, BFS - h..

mygumi.tistory.com

어떻게 코드를 바꿔야 답을 찾게 할 수 있는지 한참을 고생했는데, 생각보다 간단하게 풀렸다.

결국 '빈 공간을 바이러스에 감염시키는 마지막 시점'만 반환하면 된다. 그게 정답이니까.

 

 

내가 BFS 코드 만드는 방식이 효율성에 문제가 있는 것 같다.

다른 삼성 SW역량테스트 기출문제에서도 비슷한 방식으로 BFS 코드를 만들었더니 시간초과가 자꾸 난다.

 

왜케 어렵누

반응형