1 분 소요



https://www.acmicpc.net/problem/1337



🔍 문제 풀이

문제 도식화

for(int j=list.get(i); j<list.get(i) + 5; j++)는 인덱스가 아닌 값에 접근하는 것이므로, if(list.contains(j)) cnt++; 했을 때 인덱스 오류가 발생하지 않음에 유의하자.

assets/images/2025/1337.jpg




💻 코드

contains 사용

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<n; i++){
            list.add(Integer.parseInt(br.readLine()));
        }

        int max = Integer.MIN_VALUE;

        for(int i=0; i<n; i++){
            int num = list.get(i);
            int cnt = 0;

            // 현재 원소부터 5칸 구간 안에 포함된 수 세기
            for(int j=num; j<num+5; j++){
                if(list.contains(j)) cnt++; // 포함됐다면 cnt ++

            }
            max = Math.max(max, cnt); // 최대 포함 개수 갱신
        }

        System.out.println(5- max); // 부족한 원소 개수 출력
    }
}


3중 for문 사용

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];
        for(int i=0; i<n; i++){
            arr[i] = Integer.parseInt(br.readLine());
        }

        int max = Integer.MIN_VALUE;

        for(int i=0; i<n; i++){
            int num = arr[i];
            int cnt = 0;
            for(int j=num; j<num+5; j++){
                for(int z=0; z<n; z++){
                    if(arr[z] == j) cnt++;
                }
            }
            max = Math.max(max, cnt);

        }

        System.out.println(5- max);

    }
}


카테고리:

업데이트:

댓글남기기