import java.lang.*; import java.util.*; public class Main { public static final Scanner scanner = new Scanner(System.in); public static final int MAX_SEAT_NUMBER = 1000; public static final int MAX_COLOR_NUMBER = 100; /** * * @param n : 좌석의 수. 좌석은 0~(n-1)번의 번호를 가진다. * @param m : 좌석을 칠한 횟수. * @param paintings : 좌석들을 색칠한 이벤트들의 정보 */ public static void solve(int n, int m, Painting[] paintings) { in..
자료구조 & 알고리즘 관련
import java.lang.*; import java.util.*; public class Main { public static final Scanner scanner = new Scanner(System.in); public static final int MAX_TABLE_LENGTH = 10000; public static int fillFrequencyTable(int[] data, int n, int[] table) { Listlist = new ArrayList(); for(int i = 0; i < n; i ++){ table[data[i]]++; } int value = 0; for(int i = 0; i < MAX_TABLE_LENGTH; i ++){ if(value < table[i]..
이전에 만든 노드 클래스는 취약하다. 헤더가 링크드 리스트의 대표이면서 첫번째 값이기도 하다. 이 첫번째 값이 삭제될 경우 문제가 발생하게 된다. class LinkedList{ Node header = null; static class Node{ int data; Node next = null; } public LinkedList() { this.header = new Node(); } void append(int d){ Node end = new Node(); end.data = d; Node n = this.header; while(n.next != null){ n = n.next; } n.next = end; } void delete(int d){ Node n = this.header; while..
// 단방향 링크드 리스트 구현 class Node{ private final int data; // 현재 데이터 private Node next = null; // 다음 데이터 public Node(int d){ this.data = d; } // 뒤에 더해주면 된다. void append(int d){ Node end = new Node(d); // 마지막으로 들어갈 노드를 생성해준다. Node node = this; // 현재 노드 while(node.next != null){ // 노드의 다음 인자가 있다면 다음으로 계속 찾아준다. node = node.next; // 다음 노드로 넘어가는 부분 } node.next = end; // 다음 노드의 주소값을 end로 설정 } // 노드의 next 값..