문제 링크 : https://www.acmicpc.net/problem/5597
1. 요구 사항 이해
시간, 메모리 제한 : 1초 / 128 MB
특별과제를 30명 중 28명이 제출했습니다. 제출하지 않은 2명의 출석번호를 구하는 프로그램을 작성.
학생번호 n : 1 ≤ n ≤ 30, 중복 없음
2. 설계/검증
복잡도
시간 복잡도 | 최악의 경우 | 공간 복잡도 |
O(1) | O(1) |
3. 정상 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 입력을 위한 객체 생성
Scanner scan = new Scanner(System.in);
// 학생 30명에 대한 배열 선언, 기본값은 false
boolean[] submitted = new boolean[30 + 1]; // 0은 사용 x
// 제출한 학생 번호 입력
for (int i = 1; i <= 28; i++) {
int studentNumber = scan.nextInt();
// 학생 번호 유효성 검사
if (studentNumber < 1 || studentNumber > 30) {
System.out.println("(1 ≤ 번호 ≤ 30)");
return;
}
// 해당 학생 번호는 제출 상태를 참으로 변경
submitted[studentNumber] = true;
}
// 결과 출력
for (int i = 1; i <= 30; i++) {
if (!submitted[i]) {
System.out.println(i);
}
}
scan.close();
}
}
추가 정리
* 입력을 받는 반복문의 범위는 28이다.
반복문의 범위를 30으로 하면 테스트 케이스가 제공하는 28개에서 추가 2개가 들어오길 기다리는 상태가 되므로 주의한다.
'◖코딩 테스트◗▬▬▬▬▬▬▬▬▬ > 백준' 카테고리의 다른 글
[백준] ✔️10811 바구니 뒤집기 (설명/코드/정답) (0) | 2024.08.12 |
---|---|
[백준] ✔️3052 나머지 (설명/코드/정답) (0) | 2024.08.11 |
[백준] 10813 공 바꾸기 (설명/코드/정답) (0) | 2024.08.11 |
[백준] 10810 공 넣기 (설명/코드/정답) (0) | 2024.08.11 |
[백준] 2562 최댓값(설명/코드/정답) (0) | 2024.08.11 |