1325번 - 효율적인 해킹
일단 제 코드 방식은 다음과 같습니다. 예제를 예로 들자면
5 4
3 1
3 2
4 3
5 3
이면 1에서 3으로 향하도록 vector[1]에 3을 넣습니다.
vector[3] : 4 5 이렇게 들어가겠죠?
처음에는 DFS로 풀었는데 시간초과가 나서 설계를 다시 BFS로 하고, 시간을 줄일 수 있는 개선을 하였습니다.
그 예는 1->3->5 or 1->3->5를 가서 1번 컴퓨터일 때 탐색을 두 번하게 되고
2->3->5 or 2->3->4 이렇게 같은 경로를 반복하게 되는 경우가 발생하니까
hist배열을 만들어서 만일 hist배열에 0 이상의 숫자가 써져 있다면 탐색을 중단하고 루프를 빠져나오도록 만들었습니다.
약간 메모이제이션틱한 컨셉을 최대한 살려보았습니다ㅜ
이렇게 되면 굳이 분기가 쓸데없이 내려가는 현상을 막을 수 있을 거라 생각했는데 이게 오히려 틀렸다고 나오네요.
제 코드에 전반적으로 어떤 문제가 있는지 지적해주셔도 되고, 개선 가르침을 주셔도 환영입니다.
감사합니다!
7 5
7 1
6 7
여기서 1번으로 시도하면 (1,6,7) 총 3개가 감염되고 2번으로 시도하면 (2,3,4,5) 총 4개가 감염되는데 1,2라고 출력하네요 그리고 방문배열 초기화도 안하고 계시고 bfs로 구하면 3번컴퓨터로 인해 감염되는 수가 1로 저장되네요
댓글을 작성하려면 로그인해야 합니다.
celestial 2년 전
일단 제 코드 방식은 다음과 같습니다. 예제를 예로 들자면
5 4
3 1
3 2
4 3
5 3
이면 1에서 3으로 향하도록 vector[1]에 3을 넣습니다.
vector[3] : 4 5 이렇게 들어가겠죠?
처음에는 DFS로 풀었는데 시간초과가 나서 설계를 다시 BFS로 하고, 시간을 줄일 수 있는 개선을 하였습니다.
그 예는 1->3->5 or 1->3->5를 가서 1번 컴퓨터일 때 탐색을 두 번하게 되고
2->3->5 or 2->3->4 이렇게 같은 경로를 반복하게 되는 경우가 발생하니까
hist배열을 만들어서 만일 hist배열에 0 이상의 숫자가 써져 있다면 탐색을 중단하고 루프를 빠져나오도록 만들었습니다.
약간 메모이제이션틱한 컨셉을 최대한 살려보았습니다ㅜ
이렇게 되면 굳이 분기가 쓸데없이 내려가는 현상을 막을 수 있을 거라 생각했는데 이게 오히려 틀렸다고 나오네요.
제 코드에 전반적으로 어떤 문제가 있는지 지적해주셔도 되고, 개선 가르침을 주셔도 환영입니다.
감사합니다!