-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
해결됨
널 포인터 에러
23.10.11 02:17 작성 조회수 205
1
import java.io.*; import java.util.*; public class Main { static final int MAX = 100000 + 10; static ArrayList<Integer>[] graph; static boolean[] visited; static int[] answer; static int N, M, R; static int order; public static void dfs(int idx) { visited[idx] = true; answer[idx] = order; order++; for (int i = 0; i < graph[idx].size(); i++) { int next = graph[idx].get(i); if (!visited[next]) { dfs(next); } } } public static void main(String[] args) throws IOException { // 0. 입력 및 초기화 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); R = Integer.parseInt(st.nextToken()); graph = new ArrayList[MAX]; for (int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } visited = new boolean[MAX]; answer = new int[MAX]; order = 1; for (int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); graph[x].add(y); graph[y].add(x); } // 2. 내림차순 정렬 for (int j = 0; j < N; j++) { Collections.sort(graph[j], Collections.reverseOrder()); } // 3. 재귀함수 출력 dfs(R); for (int k = 1; k <= N; k++) { bw.write(String.valueOf(answer[k])); bw.newLine(); } br.close(); bw.close(); } }
해당 코드를 구현했는데, 널 포인터 에러가 뜹니다..!
어떤 부분에서 잘못됐는지 피드백 받고자 질문드립니다!
감사합니다
답변을 작성해보세요.
1
개발자로 취직하기
지식공유자2023.10.11
버럼님 안녕하세요 :)
올려주신 코드 확인했는데 정렬하는 부분에서 반복문을 0부터 N미만까지 돌고 있어서 0번 인덱스를 접근할 때 null pointer exception이 발생하는 것 같아요!
생성하실 때는 1부터 N 이하까지 제대로 생성됐지만, sorting시의 인덱스가 잘못된 것 같고, 이것만 수정하면 큰 문제 없을 것 같습니다:)
오늘도 공부 화이팅하세요!!
답변 1