<문제 제시>
<문제설명>
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
'Algorithms > 백준' 카테고리의 다른 글
[백준] '소트인사이드' - Java (0) | 2023.07.14 |
---|---|
[백준] '골드바흐의 추측' - Java (0) | 2023.05.19 |
[백준] 2480번 '주사위 세개' - Java (0) | 2022.09.05 |
[백준] 2525번 '오븐 시계' - Java (0) | 2022.09.04 |
[백준] 2884번 '알람 시계' - Java (0) | 2022.09.03 |