[작성일: 2023. 08. 27]
https://www.acmicpc.net/problem/5597
풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] student = new int[30];
int[] homework = new int[28];
for (int i = 0; i < 28; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
homework[i] = Integer.valueOf(st.nextToken());
}
for (int j = 0; j < student.length; j++) {
student[j] = j + 1;
}
for (int num : homework) {
for (int k = 0; k < student.length; k++) {
if (num == student[k]) {
student[k] = 0;
break;
}
}
}
for (int l = 0; l < student.length; l++) {
if (student[l] != 0) {
bw.write(student[l] + "\n");
}
}
br.close();
bw.flush();
bw.close();
}
}
1번부터 30번까지의 출석번호를 담을 배열을 만들고 과제 제출 명단을 담을 28 크기의 배열을 만든다.
그 다음 이중for문을 사용해서 homework와 student 배열을 하나하나 비교하여 존재하는 번호는 출석부에 0을 대입한다. 이렇게 되면 과제 제출을 하지 않은 출석번호는 0이 대입되지 않고 출석번호로 남아있다.
student 배열에서 0이 아닌 출석 번호를 출력하면 된다.