문제 풀이

[백준] 10810번: 공 넣기 - JAVA (자바)

auyeol 2023. 5. 9. 16:41
728x90

 

 

문제

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

 

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

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

www.acmicpc.net

 

1 ~ 30의 숫자 중에서 28개의 숫자를 중복없이 입력한다. 이 중에서 입력되지 않은 2개의 숫자를 찾는 문제이다.

 

입력                                    출력
3	                                2
1	                                8
4
5
7
9
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

 

 

------------------------------------------------------------------------------------------------------------------

 

풀이

 

1부터 30까지의 출석번호가 있으므로 배열의 크기를 30으로 설정한 뒤, for문을 이용해서 배열의 원소 값들을 0으로 선언해주었다. 

 

이후, 28번의 입력을 받으므로 for문을 이용하여 학생의 출석번호를 stu 변수에 28번 입력을 받게 하였다.

 

배열은 0부터 29까지이므로 stu - 1, 0번째 배열에 1을 저장하기 위해 array1[stu] = stu + 1

 

0의 값을 가진 배열은 출석번호를 입력받지 못한 것이므로 해당 배열의 인덱스 + 1한 값을 출력하게 하였다.

 

 

 

 

(1) Scanner 사용 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		int array1[] = new int[30];  
		int stu = 0;
		
		for(int i=0;i<array1.length;i++) {
			array1[i] = 0; 
		}
		
		for(int i=0;i<28;i++) { //28번 입력 
			stu = sc.nextInt()-1;  // 1을 0번 배열에 저장하기 위해서 -1
			array1[stu] = stu+1;	// 0번에 1을 저장해야 하니까 +1
		}
		
		for(int i=0;i<array1.length;i++) {
			if(array1[i]==0) System.out.println(i+1); // 0인 경우 몇번째 배열인지 알기 위해서 i+1
		}
		
		sc.close();
		
	}

}

 

 

------------------------------------------------------------------------------------------------------------------

 

(2) BufferdReader 사용 

 

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 array1[] = new int[30];  
		int stu = 0;
		
		for(int i=0;i<array1.length;i++) {
			array1[i] = 0;
		}
		
		for(int i=0;i<28;i++) {
			stu = Integer.parseInt(br.readLine())-1; 
			array1[stu] = stu+1;	
		}
		
		for(int i=0;i<array1.length;i++) {
			if(array1[i]==0) System.out.println(i+1);
		}
		
		br.close();
		
	}

}

 

 

Scanner 사용
BufferdReader 사용

728x90