# 문제
- 주소: https://www.acmicpc.net/problem/5597
- 과제를 제출하지 않은 학생 찾기.
# 코드
▼ 코드 1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] students = new int[30];
int[] assignment = new int[30];
// 학생 출석번호 저장
for (int i = 0; i < students.length; i++) {
students[i] = i + 1;
}
// 제출한 학생 저장
for (int j = 0; j < 28; j++) {
int num = Integer.parseInt(br.readLine());
assignment[num-1] = num; // index 때문에 num-1
}
// 제출하지 않은 학생 찾기.
for (int i = 0; i < students.length; i++) {
if (assignment[i] == 0) {
System.out.println(i + 1);
}
}
}
}
▼ 코드 2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean[] submitted = new boolean[30];
// 제출한 학생
for (int i = 0; i < 28; i++) {
int num = Integer.parseInt(br.readLine());
submitted[num - 1] = true;
}
// 제출하지 않은 학생
for (int i = 0; i < 30; i++) {
if (!submitted[i]) {
System.out.println(i + 1); // index 때문에
}
}
}
}
# 입/출력 결과
# 과정
▼ 코드 1 과정
- BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
- int[] students 배열 크기를 30으로 선언.
- int[] assignment 배열 크기를 30으로 선언.
- for문 사용해서 students[i] 학생 출석번호 저장하기.
- for문 사용해서 제출한 학생 입력값을 int num에 받아서 제출한 학생 출석 번호에 num 저장. assignment[num-1] = num
- for문과 if문을 사용해서 assignment 요소 중 0인 값을 찾아서 출력.
▼ 코드 2 과정
- BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
- boolean[] submitted 배열 크기를 30으로 선언.
- for문 사용해서 계산 - 제출한 학생
- : int num에 제출한 학생 번호를 입력 받기.
- : submitted[num -1] 제출한 학생은 true 값으로 저장.
- for문 사용해서 계산 - 제출하지 않은 학생
- : 30번 반복해서 false 값을 가진 인덱스 찾기.
- : !submitted 는 false를 찾는 조건문. 그리고 i+1 해준 이유는 index 때문에.
# 느낀 점
- 이번 문제는 어제 풀은 문제보다 더 오래 걸렸다. 내가 생각한 대로 결과가 나오지 않아서 어느 부분에서 틀렸는지 혼자 열심히 찾다보니 문제 풀이 성공은 했는데, 너무 오래 걸렸다.
- 내가 풀고 싶은 방식은 boolean 값으로 제출 여부를 확인한 뒤, 제출을 안 낸 학생을 출력하는 거였는데 자주 사용하지 않는 방식이다보니 과제제출한 변수 배열 길이를 30으로 고정으로 주고 28개만 입력 받게하고, 나머지 안 받는 값은 자동으로 0이 들어가니 나중에 0인 index를 찾아서 출력하였다.
- 나중에 chat-gpt한테 내가 작성한 코드를 넘겨준 다음 boolean 값을 활용해서 효율적인 코드로 만들어달라고 하니 알려주어서 한번 쭉 읽고 혼자서 다시 풀어보았다.
'코딩 테스트' 카테고리의 다른 글
[코딩테스트] 백준 10811번: 바구니 뒤집기 (0) | 2025.05.24 |
---|---|
[코딩테스트] 백준 3052번: 나머지 (0) | 2025.05.24 |
[코딩테스트] 백준 10813번: 공 바꾸기 (0) | 2025.05.21 |
[코딩테스트] 백준 10810번: 공 넣기 (0) | 2025.05.21 |
[코딩테스트 ] 백준 2562번: 최댓값 (0) | 2025.05.20 |