-
[프로그래머스] 그래프 - 순위알고리즘 공부/문제 풀이 2020. 9. 1. 23:11
그래프의 개념보다는 set의 개념을 이용하여 문제를 풀었다..
를 참고하여 코드는 내가 작성한 것이다.
package algorithmStudy; import java.util.*; class Player{ Set<Integer> win=new HashSet<>(); //player한테 이긴사람 Set<Integer> lose=new HashSet<>(); //player 진사람 } public class graph2 { static int solution(int n, int[][] results) { int answer = 0; Player[] players=new Player[n+1]; //player배열 초기화 for(int i=0;i<n+1;i++) { players[i]=new Player(); } for(int i=0;i<results.length;i++) { int winner=results[i][0]; int loser=results[i][1]; //결과를 추가 players[loser].win.add(winner); players[winner].lose.add(loser); //winner를 이긴사람들을 players[loser].win에 추가 players[loser].win.addAll(players[winner].win); //loser한테 진사람들을 players[winner].lose에 추가 players[winner].lose.addAll(players[loser].lose); } for(int i=results.length-1;i>=0;i--) { int winner=results[i][0]; int loser=results[i][1]; //winner를 이긴사람들을 players[loser].win에 추가 players[loser].win.addAll(players[winner].win); //loser한테 진사람들을 players[winner].lose에 추가 players[winner].lose.addAll(players[loser].lose); } for(int i=0;i<=n;i++) { if(players[i].win.size()+players[i].lose.size() ==n-1) answer++; } return answer; } public static void main(String[] args) { // TODO Auto-generated method stub int n=5; int[][] results= {{4,3},{4,2},{3,2},{1,2},{2,5}}; System.out.println(solution(n,results)); } }
d한방향으로만 탐색하면.. 혹시 비는 부분이 있을까 싶어서 반대 방향으로도 탐색햇다.
한 방향 탐색시 30점이었고, 양 방향 탐색 추가시 60점.. 이외는 왜 틀린지 모르겠다..
(테스트 케이스 공개해주세여 ㅠㅠ)
'알고리즘 공부 > 문제 풀이' 카테고리의 다른 글
[JAVA] 백준 16235 나무 재테크 (0) 2021.09.16 [JAVA] 백준 9205 맥주 마시면서 걸어가기 (0) 2021.09.16 [프로그래머스] 그래프 - 가장 먼 노드 (0) 2020.09.01 [프로그래머스] 이분 탐색 - 징검다리 (0) 2020.09.01 [프로그래머스] 이분탐색 - 입국심사 (0) 2020.09.01