본문 바로가기
Develop/Coding Test | Algorithm

[백준] JAVA 풀이 - 5597 : 과제 안 내신 분..?

by 코젼 2024. 2. 12.
728x90
반응형

 

▶️ 백준 문제

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

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

 

처음에 두 배열을 비교해야겠다고 생각하고 차집합(removeAll)을 이용해서 문제를 풀었지만

해당 함수를 모를 경우를 대비해 다른 방법으로도 풀이가 가능해서 기록으로 남기고자 한다.

▶️ 차집합 풀이

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        List<Integer> student = new ArrayList<Integer>();
        List<Integer> submit = new ArrayList<Integer>();
        for (int i=1; i<=30; i++) student.add(i);
        for (int i=1; i<=28; i++ ) submit.add(Integer.parseInt(br.readLine()));
        student.removeAll(submit);
        for (int i : student) System.out.println(i);
    }
}

 

▶️ 다른 풀이

배열의 인덱스와 학번은 +1 씩 차이가 나므로, 입력받은 값의 -1 인덱스의 값을 1로 처리해둔다.

배열의 초기 값은 모두 0으로 초기화되어있기 때문에, 입력된 값이 없었다면 초기값으로 세팅되어 있을 것이다.

> 입력받은 값은 1로 세팅되어 있음

0값인 경우 출력하면 된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] student = new int[30];
        // 28명만 제출함. 만약 입력 값이 3인 경우 student[2] = 1
        for (int i=1; i<=28; i++) student[Integer.parseInt(br.readLine()) - 1]++;
        for (int i=0; i<30; i++) {
            // 4 값이 없을 경우 인덱스는 3이기 때문에 i+1 출력
            if (student[i] == 0) System.out.println(i+1);
        }
    }
}
728x90
반응형

댓글