시간&메모리 제한
문제
입력 & 출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Back_1181 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
ArrayList<word> arr = new ArrayList<>();
for (int i = 0; i < N; i++) {
String temp = br.readLine();
arr.add(new word(temp.length(), temp));
}
Collections.sort(arr);
sb.append(arr.get(0).word + "\n");
String temp = arr.get(0).word;
for (int i = 1; i < arr.size(); i++) {
if (temp.equals(arr.get(i).word)) {
continue;
}
temp = arr.get(i).word;
sb.append(arr.get(i).word + "\n");
}
System.out.println(sb);
}
static class word implements Comparable<word> {
int len;
String word;
public word(int len, String word) {
this.len = len;
this.word = word;
}
@Override
public int compareTo(word o) {
if (this.len == o.len) {
return this.word.compareTo(o.word);
}
return this.len - o.len;
}
}
}
- 이 문제는 정렬 알고리즘을 이용하는 문제입니다.
- ArrList를 이용해서 문제풀이를 진행했고, Comparable를 이용해서 비교를 해줬습니다.
if(this.len==o.len) {
for (int i = 0; i < this.len; i++) {
if(this.word.charAt(i)==o.word.charAt(i)) {
continue;
}
return this.word.charAt(i)-o.word.charAt(i);
}
}
- 이 코드는 처음에 compareTo를 사용하기 전에 직접 문자열을 비교해보는 코드를 짜봤습니다.
- 맨 앞의 문자열 부터 비교하기 시작해서 문자열이 다르면 비교를 해줍니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_14425 문자열 집합(자바) / 문자열 (0) | 2021.07.22 |
---|---|
백준_18429 근손실(자바)/ 백트래킹 (0) | 2021.07.21 |
백준_2304 창고 다각형(자바) / 브루드 포스 알고리즘 (0) | 2021.07.20 |
백준_1051 숫자 정사각형(자바) / 브루드 포스 알고리즘 (0) | 2021.07.19 |
백준_10974 모든 순열(자바) / 브루드 포스 알고리즘 (0) | 2021.07.18 |