뭐야 이 킹받는 예제 입력은..?
대충 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를 출력하면 된다!