목록정렬 (13)
Dev.baelanche
카드에 들어갈 수 있는 숫자의 범위가 너무나도 커서 배열로 만들기엔 부적합하다. Map을 만들어서 key에 카드의 값, value에 카드의 개수를 저장해서 정렬하는 방법으로 풀었다. public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); Map map = new HashMap(); for(int i=0; i o2.getValue()) return -1; else { if(o1.getKey() < o2.getKey()) ..
정렬만 꼼꼼하게 해주면 된다. 딱봐도 알겠지만 내가 쓴 코드는 상당히 별로다...ㅋㅋ;; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Student s[] = new Student[n]; for(int i=0; i o2.korean) return -1; else { if(o1.english o2.english) return 1; else { if(o1.math o2.math) return..
Comparator를 구현하여 정렬해주었다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Member m[] = new Member[n]; for(int i=0; i
원래 단어와 사전의 단어를 각각 가리키는 포인터를 둔다. D E V I L I V D E V I L I V I 시작시 포인터위치는 양쪽 다 0이며 D, D를 비교한다. D E V I L I V D E V I L I V I 일치시에 양 포인터가 오른쪽으로 한칸 움직인다. D, E, V, I, L, I, V가 모두 일치하므로 포인터는 7번째 문자를 가리킨다. 원래단어의 포인터가 끝위치일때는 사전단어의 포인터만 움직이며 갑분싸 가성비가 그만큼 줄어든다. 다른 예시를 보자 D E V I L I V D E N V E R 포인터가 3번째 위치일때 글자가 서로 다르다. 이럴때는 사전단어의 포인터 위치만 증가하며 맞을때까지 움직인다. 단어가 일치하지 않으므로 갑분싸 가성비는 감소한다. 원래 단어 3번째, 사전 단어 4..
위 문제를 풀기위한 구조들로 1. 팀 번호, 문제 번호 별로 푸는데 걸린시간을 저장한 배열 int t[][] = new int[n+1][m+1]; 2. 팀 번호, 푼 문제 수, 총 걸린 시간을 저장한 클래스 를 만들어 주었다. static class Team { int no; int solve; int time; Team(int no, int solve, int time) { this.no = no; this.solve = solve; this.time = time; } } 먼저 RE, TLE, WA의 경우에는 팀 번호, 문제 번호 별로 걸린시간을 더해준다. if(result.equals("WA") || result.equals("RE") || result.equals("TLE")) t[teamNo][p..
네개의 값을 다음과 같은 방법으로 구했다. 산술평균 : 입력받을 정수들을 모두 더해 n으로 나누어 반올림 중앙값 : 배열을 정렬해 가운데 배열의 값을 출력 최빈값 : 인덱스, 빈도 횟수를 담은 클래스를 만들어 정렬한 후 최빈값(여러 개 일시 두번째 값) 출력 범위 : 최대값 - 최소값 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 n = In..
퀵정렬로 정렬하여 k-1 의 인덱스를 출력했는데 96%에서 계속 시간초과가 났다. 질문게시판을 보니 퀵정렬 대신 퀵셀렉트를 써야된다고 한다. 퀵셀렉트는 퀵정렬 도중 원하는 인덱스를 바로 캐치하는 알고리즘인데, 공부할 것도 많은데 알아보기 귀찮았다. 그래서 합병정렬로 해봤는데 역시나 풀린다.... '잘' 구현할거 아니면 퀵정렬보다는 합병정렬 쓰는걸 추천한다. public class Main { static int temp[]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Bu..