Algorithms/백준

[백준] '과제 안 내신 분..?' - Java

LEFT 2023. 5. 18. 16:02

<문제 제시>

<문제설명>
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 
교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로
1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 
그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.

<예시 입출력>


<문제 해결 과정>

출석번호를 통해 과제를 제출안한 학생의 번호를 찾으면 되는 문제이다. 

HashMap의 개념을 알고 풀면 좋았겠지만 단순히 배열로 풀 수 있었다.

for(int i = 1; i < 29; i++) {
    int in_class = sc.nextInt();
    student[in_class] = 1;
}

student배열에 출석번호로 초기화를 해준다.

입력되는 출석번호가 없으면 그 출석번호는 과제를 제출하지 않은 것이다.

제출하지 않은 출석번호를 오름차순 정렬하여 출력한다.


<전체코드>

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		int[] student = new int[31];
		
		// 배열 입력
		Scanner sc = new Scanner(System.in);
		for(int i = 1; i < 29; i++) {
			int in_class = sc.nextInt();
			student[in_class] = 1;
		}
		
		for(int i = 1; i < student.length; i++) {
			if(student[i] != 1) {
				System.out.println(i);
			}
		}
		
		// Scanner 클래스를 사용 후 close로 종료해주어야함
		sc.close();
	}
}

입력을 sc.nextInt()로 받아 그에 해당하는 인덱스에 +1을 해주어

과제제출을 하지 않은 학생은 0으로 그대로 남아있게 된다. 

비슷한 알고리즘 문제를 풀어봤던 것 같은데 배열의 토큰 값을 활용하여 푸는 방법또한 연습해봐야겠다고 느꼈다.

 


문제링크)
https://www.acmicpc.net/problem/5597

 

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

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

www.acmicpc.net