무려 3일끝에
왜 안되는가에 대한 해답을 찾았다.
문제를 잘 읽어야 된다.
굳이 15명만 제출할 필요도 없다
여기서는
2번 과 8번이 제출하지 않으면 되는
정답을 제출해주면 된다.
그리고 int 배열 안에는
default로 0 값이 들어간다.
문제
정답
스캐너 사용
package codingTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class codingTest_5597 {
public static void main(String[] args) throws IOException { // Null 예외 처리
Scanner in = new Scanner(System.in); // 스캐너 처리
int[] arr = new int[31]; // 배열 31개 자리까지
int A; // 변수 A 선언
for(int i=1; i<29; i++) { // i가 29 전까지 반복
A = in.nextInt(); // A을 값 받음
arr[A] = 1; // arr[낸사람번호] = 1 로 함
}
for(int i=1; i<arr.length; i++) { // i 가 arr[낸사람 수] 만큼 반복함
if(arr[i] != 1) { // 만약 arr[낸사람이 번호가] = 1 아니면 안낸사람임
System.out.println(i); // 안냈을 때 번호를 출력함
}
}
in.close(); // 스캐너 종료
}
}
어떤 분의 스캐너로 정답을 참고 하였는데,
주석으로 코드리뷰 해놓았다.
버퍼 사용
package codingTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException { // Null 예외 처리
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 버퍼 선언
boolean[] arr = new boolean[31]; // 0번은 없으니까 1~30번까지 있으려면 공간이 31 개 필요함
for(int i=0; i<28; i++) { // 변수 i 는 0~28번 미만이므로 총 28번을 반복함. 그럼 2개 호출가능
StringTokenizer st = new StringTokenizer(br.readLine(), " "); // 개행 및 " " 마다나눔
int A = Integer.parseInt(st.nextToken()); // 변수 A에 계속 학생번호를 받음
arr[A] = true; // arr[학생번호]를 true로 넣어줌
}
for(int i=1; i<arr.length; i++) { // i가 1부터인 이유는 0번 학생은 없음
if(arr[i] != true) { // arr[학생 번호] 가 true가 아니면 과제 안한 학생임
System.out.println(i); // 과제 안한 학생의 번호를 호출
}
}
br.close(); // 버퍼종료
}
}
boolean 은 default 값이 false로 들어가있다.
버퍼 사용 2
package codingTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException { // Null 예외 처리
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 버퍼 선언
int[] arr = new int[31]; // 0번은 없으니까 1~30번까지 있으려면 공간이 31 개 필요함
for(int i=0; i<28; i++) { // 변수 i 는 0~28번 미만이므로 총 28번을 반복함. 그럼 2개 호출가능
StringTokenizer st = new StringTokenizer(br.readLine(), " "); // 개행 및 " " 마다나눔
int A = Integer.parseInt(st.nextToken()); // 변수 A에 계속 학생번호를 받음
arr[A] = 1; // arr[학생번호]를 1 넣어줌
}
for(int i=1; i<arr.length; i++) { // i가 1부터인 이유는 0번 학생은 없음
if(arr[i] != 1) { // arr[학생 번호] 가 1 아니면 과제 안한 학생임
System.out.println(i); // 과제 안한 학생의 번호를 호출
}
}
br.close(); // 버퍼종료
}
}
int를 사용하였다.
int 배열은 디폴트 0 이 들어가있다.
버퍼의 경우에는 하나라도 값을 안넣어주게 되면
NosuchElementException 에러를 내보낸다.
과제를 제출 한 사람 3명일 경우에는
나머지 번호가 공백이 될 것이기 때문에
계속 해서 저런 에러를 보낼 것이다.
계속 이런식으로 런타임 에러를 보내기 때문이다.
To be continue..
'Codingtest' 카테고리의 다른 글
[코딩테스트] 백준 10807번 개수 세기 해설집 (Java) (0) | 2022.10.24 |
---|---|
[코딩테스트] 백준 1546번 평균 해설집 (Java) (0) | 2022.10.23 |
[코딩테스트] 백준 3052번 나머지 해설집 (Java) (0) | 2022.10.23 |
[코딩테스트] 백준 2562번 최댓값 해설집 (Java) (0) | 2022.10.19 |
[코딩테스트] 백준 10818번 최소, 최대 해설집 (Java) (0) | 2022.10.19 |