-
https://www.acmicpc.net/problem/1325
1325번: 효율적인 해킹
첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201325
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 컴퓨터 연결정보가 주어졌을때 가장 연결이 많이된 컴퓨터를 출력하는 문제다.
A가 B를 신뢰하는 경우 B를 해킹하면 A도 해킹가능하다.
가장 많이 연결된 컴퓨터를 오름차순으로 출력한다.
해당문제는 bfs를 이용해서 해결했고, 연결 정보는 ArrayList를 배열로 이용해서 처리하였고,
ArrayList배열에 추가하는 부분에서 조건에 맞도록 list[B].add(A)로 하였으며,
컴퓨터마다 bfs를 돌리면서 연결된 컴퓨터수를 체크하고, bfs가 끝나면 max값을 갱신하는 방식으로 했으며,
최종 적으로 StringBuilder에 max값에 해당하는 컴퓨터 번호를 넣어준뒤 출력해주었다.
처음에 문제를 풀었을땐 시간초과가 발생하였고, 사용하는 변수들을 방문 배열을 제외하곤 거의 static으로 선언해
사용했는데 방문 배열도 static로 선언하여 사용하니 시간초과는 해결할수 있었다.
근데 아직 그이유는 잘 모르겠다. 구글링을 해보긴 했지만 아직 적절한 해답은 찾지 못했다...?
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 13565 침투 JAVA (0) 2021.11.18 Baekjoon 5567 결혼식 JAVA (0) 2021.11.17 Baekjoon 1655 가운데를 말해요 JAVA (0) 2021.11.17 Baekjoon 2660 회장뽑기 JAVA (0) 2021.11.17 Baekjoon 14728 벼락치기 JAVA (0) 2021.11.17 댓글