울음참고 개발공부
728x90

 

 

https://www.acmicpc.net/problem/5597

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

 

 


 

 

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
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!