자바 백준 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 반환 } }
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 3003 - 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.06.28 |
---|---|
[Java] 백준 풀기 2908 - 상수 (0) | 2023.06.27 |
[Java] 백준 풀기 11022 - A+B 8 (0) | 2023.06.24 |
[Java] 백준 풀기 25314 - 코딩은 체육과목 입니다 (0) | 2023.06.23 |
[Java] 백준 풀기 2525 - 오븐 시계 (0) | 2023.06.22 |