[백준] 5597번 : 과제 안 내신 분..? - JAVA(자바)

Life is ninanino·2022년 11월 8일
0

[백준] JAVA

목록 보기
31/37
post-thumbnail

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


뭐야 이 킹받는 예제 입력은..?
대충 1부터 30까지 입력받아서 그 중 빠진 숫자를 찾으면 되겠다
라고 생각했는데 배열에서 contains 를 쓸 수가 없다
역시 인생은 만만치 않은 것이다
그래서 두개의 배열을 생성해서 값을 비교해줘야하나 싶었는데
입력받는 값 자체를 배열의 값으로 넣어 버리면 어떨까? 라는 생각을 했다.

++정답코드

package 백준;// @ author ninaaano

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class b_5597 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 28개의 번호를 담을 배열 선언. 남은 값은 0으로 들어간다.
        int[] student = new int[31];

        // 입력은 for문이 돌아갈때 같이 입력받지 않으면 첫 입력값만 받게된다.
        for(int i=1; i<=28; i++){
            int userInputNumber = Integer.parseInt(br.readLine());
            student[userInputNumber]++;
        }

        /*
        두번째 for문은 1부터 시작해야한다. 0부터 시작했을 때 0이 출력된다
        1로 바꿨을 때 배열의 길이는 30이 아니라 31이여야 한다. 30으로 했을 때 student.length까지 받았을때 1개만 뱉는다
         */
        
        for(int i=1; i<student.length; i++){
            if(student[i]==0){
                System.out.println(i);
            }
        }

    }
}

참 많이 수정했다.
맨 처음엔 student의 배열을 30개만 설정해줬다.
그럼 배열은 29까지만 있다는 걸 까먹었다.
배열에서 값을 넣고 난 나머지는 0으로 들어간다.

어렴풋이 기억하고 있었다.
그래서 입력받은 값만 배열에 넣고
배열에서 0인 값을 돌고있는 숫자 i와 비교해서 i를 출력하면 된다!

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글