728x90
https://www.acmicpc.net/problem/5597
import java.util.Scanner;
public class BOJ5597 {
public static void main(String[] args) {
int A[] = new int[31];
Scanner sc = new Scanner(System.in);
for(int i = 0; i<28; i++) {
int n = sc.nextInt();
A[n]++;
}
for(int i=1; i<=30; i++) {
if(A[i]==0) System.out.println(i);
}
}
}
문제 푸는 방식을 모르겠어서 강의를 통해 배웠다.
0~30 까지 들어갈 배열을 만들기 위해 A 의 크기를 31 로 만들어주었다.
배열 A 는 모두 0으로 채워져있을 것이다.
첫번째 for 문
입력받은 값을 A의 인덱스값으로 받아 값을 증가시킨다.
예를 들어, n 에 1 을 입력했다면 A[1] == 1 이 되는 것이다.
이런식으로 28 개의 값을 받는다.
두번째 for문
문제에서 학생의 출석번호는 1~30 이므로 i=0 일 때를 제외하고 i=1 부터 시작한다.
첫번째 for문에서 입력받은 값들의 인덱스 값은 모두 1로 증가 시켰으니, A[1]~A[31] 에서 '0' 인 값은 값을 입력 받지못했기 때문에 증가되지 않은 것이다.
i=1 일때 부터 for 문을 순서대로 돌기 때문에 값 또한 자연스레 내림차순으로 정렬된다.
[ 출처 ]
https://www.youtube.com/watch?v=nbmDQqP7wPw&t=266s
728x90
'코테연습 > 백준' 카테고리의 다른 글
BAEKJOON | 최댓값 JAVA (0) | 2024.01.26 |
---|---|
BEAKJOON | 15552 빠른 A+B JAVA (0) | 2024.01.25 |