인프런 커뮤니티 질문&답변

버럼님의 프로필 이미지
버럼

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

11. 임시반장정하기

해당 코드가 테스트 케이스 2개는 통과했는데 나머지 부분에서 오류가 났습니다.

작성

·

376

0

import java.util.*;
import java.io.*;
public class Main {

    static int[][] graph;
    static boolean[][] visited;
    static int N;
    static int[] answer;
    static int real;

    public static void solution(int y, int x) { // y : 학생, x : 학년
        visited[y][y] = true;   // 자신을 카운팅하지 않기 위한 방법

        for (int i = 1; i <= N; i++) {  //세로 비교 (반 같은지 비교)
            if (graph[i][x] == graph[y][x] && !visited[y][i]) {
                answer[y]++;
                visited[y][i] = true;
            }
        }

        int max = Integer.MIN_VALUE;    // answer 배열에서 최댓값 찾기
        for (int i = 0; i < answer.length; i++) {
            if (answer[i] > max) {
                max = answer[i];
                real = i;
            }
        }
    }
    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());

        graph = new int[N+1][6];
        visited = new boolean[N+1][6];
        answer = new int[N+1];
        for (int i = 1; i <= N ; i++) {
            String[] str = br.readLine().split(" ");
            for (int j = 1; j <= 5; j++) {
                graph[i][j] = Integer.parseInt(str[j - 1]);
            }
        }

        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= 5; j++) {
                solution(i ,j);
            }
        }

        bw.write(String.valueOf(real));
        bw.close();
        br.close();

    }
}

피드백 요청합니다..!

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

i가 1부터 N까지 반복하고 있는데 visited[y][i]로 인덱싱 하는 곳에서 공간부족으로 런타임 에러가 나고 있습니다.

버럼님의 프로필 이미지
버럼

작성한 질문수

질문하기