공부하기/백준

[Java] 백준 풀기 5597 - 과제 안 내신 분..?

XEV 2023. 6. 26. 23:53

자바 백준 5597번

브론즈 5

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

 

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

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현

 

 

 

 

 

문제 풀기

HashSet 을 이용하여 28 개의 번호를 저장하고 HashSet에 없는 번호를 출력한다.

 

HashSet 의 size() 가 28 이 될때까지 숫자 입력을 받는다.

1 부터 30 까지 숫자를 Set<Integer> 의 contains() 를 이용하여 있는지 없는지를 판단하고 만약 없다면 LIst 에 담는다.

List<Integer> missingNumbers 에 담긴 두 개의 숫자를 출력한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 28개 번호 입력 받기
        Set<Integer> numbers = new HashSet<>();  // 입력 받을 HashSet 지정
        while (numbers.size() < 28) {  // HashSet에 28개의 번호가 저장될때까지 반복
            int number = sc.nextInt();  // 번호 입력
            numbers.add(number);  // Set에 입력된 번호 추가
        }
        // System.out.println(numbers);  // TEST PRINT
        
        // 없는 번호 찾기 메서드
        List<Integer> result = findMissingNumbers(numbers);
        
        // 번호 2개 결과 출력
        System.out.println(result.get(0));
        System.out.println(result.get(1));
    }
    
    public static List<Integer> findMissingNumbers(Set<Integer> numbers) {
        // List에 없는 번호를 저장
        List<Integer> missingNumbers = new ArrayList<>();  // 번호 저장할 List 생성
        for (int i = 1; i <= 30; i++) {  // 1부터 30까지 대입
            if (!numbers.contains(i)) {  // numbers에 저장된 번호가 없다면
                missingNumbers.add(i);  // 없는 번호 List에 추가
            }
        }
        
        return missingNumbers;  // 없는 2개의 번호가 담긴 List 반환
    }
    
}