https://www.acmicpc.net/problem/5597
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean[] checkStudent = new boolean[31];
for (int submit = 0; submit < 28; submit++) {
checkStudent[scanner.nextInt()] = true;
}
for (int notSubmit = 1; notSubmit <= 30; notSubmit++) {
if (!checkStudent[notSubmit]) {
System.out.println(notSubmit);
}
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean[] checkStudent = new boolean[31];
과제 제출한 학생들의 번호를 받기 위한 배열인 checkStudent를 선언합니다.
boolean형 배열은 선언 시 false로 초기화 됩니다.
출석을 1부터 세므로 1~30이 필요합니다. 따라서 31 크기 배열로 선언합니다.
for (int submit = 0; submit < 28; submit++) {
checkStudent[scanner.nextInt()] = true;
}
제출한 학생들의 번호를 입력하면서 해당 위치 배열 값은 true 로 지정합니다.
for (int notSubmit = 1; notSubmit <= 30; notSubmit++) {
if (!checkStudent[notSubmit]) {
System.out.println(notSubmit);
}
}
notSubmit이 1부터 시작하는 이유는 출석을 1번부터 세기 때문입니다.
0번 배열을 버린 것이므로 배열의 크기도 31로 선언했습니다.
제출하지 않은 학생의 경우,
if (!checkStudent[notSubmi])
에서 걸리게 됩니다.
기본이 false, 과제를 낸 학생은 true 입니다
과제를 낸 학생이 if문에 들어가게 되면 !ture, 즉 false가 되므로 if문을 실행하지 않습니다.
과제를 내지 않은 학생이 if문에 들어가게 되면 !false, 즉 true가 되므로 if문을 실행합니다.
참고
'백준 > Java' 카테고리의 다른 글
[백준][Java] 11654 - 아스키 코드 (0) | 2023.07.27 |
---|---|
[백준][Java] 2738 - 행렬 덧셈 (0) | 2023.07.27 |
[백준][Java] 15552 - 빠른 A+B (0) | 2023.07.21 |
[백준][Java] 10807 - 개수 세기 (0) | 2023.07.20 |
[백준][Java] 10871 - X보다 작은 수 (0) | 2023.07.20 |