본문 바로가기
JAVA 코딩 알고리즘 연습/백준

백준 - 과제 안 내신 분..? (5597번) / JAVA (자바) 코딩 알고리즘 연습

by easpop 2022. 12. 31.
728x90
반응형

과제 안 내신 분..? 성공다국어

한국어   
 

 

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 34036 19034 17111 57.012%

 

문제

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

교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.

입력

입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.

출력

출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.

예제 입력 1 복사

3
1
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 복사

2
8

예제 입력 2 복사

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

예제 출력 2 복사

2
8

사실 요즘은 백준보다는 프로그래머스를 많이 풀고 있기 때문에

블로그 업데이트를 위해서 백준을 들어가봤다.

이 문제를 그때 당시에는 어려워서 못풀고 넘어갔던 기억이 있는데,

오늘 풀어보니 5분도 안걸려서 바로 풀었다!ㅋㅋㅋ 이제 조금 레벨업 한 것이 실감나는것 같기도 하고....

반응형

코드 설명은 어렵지 않다.

int 배열 arr 길이를 31로 생성해주었다.

학생이 30명이지만 자바는 인덱스가 0부터 시작하기 때문에 31로 길이를 해줘야 배열의 번호 30번을 쓸 수 있다.

for문을 통해 모든 배열에 1을 입력해주고, 제출한 번호의 인덱스를 0으로 수정해준다.

추가로 입력값에는 0번 학생이 없으니, 따로 배열의 0번은 0으로 넣어준다.

그렇게 되면, 제출하지 않은 번호는 1번으로 그대로 있을테니, 배열의 값이 1번인 배열 번호를 출력해주면 된다~~!

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		int[] arr = new int[31];
		
		for (int i = 0; i < arr.length; i++) {
			arr[i] = 1;
		}
		
		arr[0] = 0;
		for (int i = 0; i < 28; i++) {
			int a = scanner.nextInt();
			arr[a] = 0;
		}
		
		for (int i = 0; i < arr.length; i++) {
			if(arr[i] == 1) {
				System.out.println(i);
			}
		}

	}
}
728x90
반응형

댓글