반응형
https://www.acmicpc.net/problem/5597
5597번: 과제 안 내신 분..?
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,
www.acmicpc.net
아무리 생각해도 해결이 되지 않았다.
알고보니 boolean을 사용하면 생각보다 쉽게 해결된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean[] arr = new boolean[31];
for(int i=0; i<28;i++) {
arr[sc.nextInt()] = true;
}
for(int i=1; i<=30;i++) {
if(!arr[i]) {
System.out.println(i);
}
}
}
}
순서대로 들여다 보자.
boolean[] arr = new boolean[31];
for(int i=0; i<28;i++) {
arr[sc.nextInt()] = true;
}
arr배열을 평소와 다르게 int가 아닌 boolean으로 적는다.
boolean[31]을 입력해 31크기의 배열을 선언한다.
boolean형 배열로 만들어 배열이 true이면 과제를 제출한 것이고, false이면 과제를 제출하지 않은 것이다.
for문을 사용해 arr[] 배열 안에 값을 입력하고, 입력된 인덱스를 true로 바꾼다.
for(int i=1; i<=30;i++) {
if(!arr[i]) {
System.out.println(i);
}
}
for문과 if문을 사용해 arr[ ] 값에 1~30까지의 수를 넣었을 때 arr[ ]에 존재하지 않는 i는 false로,
System.out.println()을 사용해 한 줄에 하나씩 출력한다.
반응형
'백준 알고리즘' 카테고리의 다른 글
백준 [11654] 아스키 코드 - 자바 풀이 (0) | 2023.05.18 |
---|---|
백준 [2920] 음계 - 자바 풀이 (0) | 2023.05.17 |
백준 [2675] 문자열 반복 - 자바 풀이 (0) | 2023.05.17 |
백준 [10813] 공 바꾸기 -자바 풀이 (0) | 2023.05.17 |
백준 [2562] 최댓값 - 자바 (0) | 2023.05.14 |