[BOJ_1181 | compareTo] 단어 정렬
2019. 1. 3. 11:06ㆍComputer Science/Problem Solving (PS)
풀이
compareTo Method를 구현하면 Java.util.Arrays에 들어있는 sort 메소드를 사용하여 쉽게 정렬이 가능한 문제였다.
token이라는 클래스를 선언하고 이 클래스는 String을 변수로 갖는다.
token을 정렬할때의 기준을 세워주기 위해 compareTo 메소드를 구현했는데
비교해야 할 두 개의 스트링의 길이가 다른 경우에는 짧은 스트링이 앞에 오도록 기준을 세워주면 되고
스트링의 길이가 같은 경우에는
String내부에 있는 compareTo 메소드를 호출하였다.
(String내부에 있는 compareTo 메소드는 스트링을 사전순으로 정렬해준다.)
자바에서는 Sort함수를 제공하고 이 함수는
데이터의 개수와 여러 조건들에 따라서 가장 효율적인 정렬 알고리즘을 사용하기 때문에
시간복잡도 면에서 굉장히 효율적이다.
혹시 compareTo 구현에 아직 어색하다면 이 문제를 풀어보는것도 괜찮을 것 같다.
소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import java.util.*; public class BOJ_1181 { public static void main(String[] args){ Scanner input = new Scanner(System.in); int n = input.nextInt(); token[] arr = new token[n]; for(int i=0;i<n;i++)arr[i] = new token(input.next()); Arrays.sort(arr); for(int i=0;i<n-1;i++) { for(int j=i;j<n;j++){ if(i!=j && arr[i].getStr().equals(arr[j].getStr())) arr[j] = new token(" "); } } for(int i=0;i<n;i++){ if(!arr[i].getStr().equals(" "))System.out.println(arr[i].getStr()); } } } class token implements Comparable<token>{ private String str; token(String str){this.str = str;} public String getStr(){return str;} public int compareTo(token tok){ if(str.length()<tok.getStr().length()) return -1; else if(str.length()>tok.getStr().length()) return 1; else return str.compareTo(tok.getStr()); } } | cs |
반응형
'Computer Science > Problem Solving (PS)' 카테고리의 다른 글
[BOJ_11586 | Array] 지영 공주님의 마법 거울 (0) | 2019.01.07 |
---|---|
[BOJ_11650 | compareTo] 좌표 정렬하기 (0) | 2019.01.05 |
[BOJ_3474 | Number Theory] 교수가 된 현우 (0) | 2019.01.02 |
[BOJ_4963 | DFS] 섬의 개수 (0) | 2019.01.02 |
[BOJ_6378 | while] 디지털 루트 (0) | 2019.01.02 |