CodeUp3108 자바 oop
2023. 5. 11. 22:04ㆍ코딩테스트/codeup
https://codeup.kr/problem.php?id=3108
정올 참여 학생 리스트 만들기 1
10 I 1011 한라산 I 999 백두산 I 999 오대산 D 999 백두산 I 800 백두산 D 500 한라산 I 900 남산 I 950 금강산 I 1205 지리산 I 700 북한산 1 2 4 5 6
codeup.kr
문제를 처음 봤을 때는 이해가 잘 안됬던 문제다.
n을 입력받으면 n만큼의 코드, 수험 번호, 이름을 입력을 받는다.
이 때 I일 경우 삽입하고 수험 번호가 기존에 존재한다면 아무 일도 일어나지 않는다.
D일 경우 삭제하는데 수험번호 기존에 존재하지 않는다면 아무 일도 일어나지 않는다.
정상적으로 입력된 값을 수험번호로 오름차순으로 정렬을 한 후
입력받은 5개의 인덱스에 맞게 순서대로 수험번호, 이름을 출력해준다.
따라서 문제 접근시
Student라는 클래스를 만들고 입력값을 Student라를 객체에 넣은후 객체를 리스트로 저장을 해야겠다는 생각을 했다.
문제 조건을 보면 삽입, 삭제 조건이 있기 때문에 조건에 맞게 리스트에 저장을 해준다.
출력시 오름차순이 되어 있기 때문에 list 인터페이스에 sort라는 메소드를 활용해 오름차순으로 정렬을 하면 된다.
import java.util.*;
public class CodeUp3108 {
static List<Student> studentList = new ArrayList<>();
static Scanner sc = new Scanner(System.in);
static int[] num = new int[5];
public static void main(String[] args) {
int n = sc.nextInt();
input(n);
sort();
inputNumber();
print();
}
public static void input(int n) {
for (int i = 0; i < n; i++) {
String code = sc.next();
int number = sc.nextInt();
String name = sc.next();
Student student = new Student(code, number, name);
if (student.getCode().equals("I") && isContain(student.getNumber())) {
studentList.add(student);
} else if (student.getCode().equals("D")) {
for (int j = 0; j < studentList.size(); j++){
if (studentList.get(j).getNumber() == student.getNumber()) {
studentList.remove(j);
break;
}
}
}
}
}
public static void sort() {
studentList.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if (o1.getNumber() > o2.getNumber()) return 1;
else if (o1.getNumber() == o2.getNumber()) return 0;
else return -1;
}
});
}
// 중복 검사
public static boolean isContain(int number) {
for (int i = 0; i < studentList.size(); i++) {
if (studentList.get(i).getNumber() == number) return false;
}
return true;
}
public static void inputNumber() {
for (int i = 0; i < 5; i++) {
num[i] = sc.nextInt();
}
}
public static void print() {
for (int i = 0; i < 5; i++) {
System.out.printf("%s %s\n", studentList.get(num[i] - 1).getNumber(), studentList.get(num[i] - 1).getName());
}
}
}
class Student {
private String code;
private int number;
private String name;
public Student() {
}
public Student(String code, int number, String name) {
this.code = code;
this.number = number;
this.name = name;
}
public String getCode() {
return code;
}
public int getNumber() {
return number;
}
public String getName() {
return name;
}
public void setCode(String code) {
this.code = code;
}
public void setNumber(int number) {
this.number = number;
}
public void setName(String name) {
this.name = name;
}
}