더 많이 실패하기

공부 93일차: 백준 11656번 접미사 배열 자바 Java 본문

알고리즘/백준

공부 93일차: 백준 11656번 접미사 배열 자바 Java

김발자~ 2022. 10. 31. 22:12
반응형

11656 접미사 배열

https://www.acmicpc.net/problem/11656

 

11656번: 접미사 배열

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

www.acmicpc.net

 

 

 

 


백준 11656번 문제 접미사 배열


문제


 

 

 

 

 


과정 생각해보기


 

1)  문자열 입력받으면 앞에서부터 한글자씩 빼면서 담아두기 - 2중 for문 사용

2) 사전순으로 정렬 - comparator, comparaTo 이용

 

 

 


정답 인정 코드


 

1) 2중for문 + 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
29
30
31
32
33
34
35
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
 
 
public class Main {
 
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        String arr[] = new String[str.length()];
        
        for(int i = 0; i < str.length(); i++) {
            arr[i] = "";
            for(int j = i; j < str.length(); j++) {
                arr[i] += str.charAt(j);    //2중for문으로 한 글자씩 빼면서 배열에 담기
            }
        }
        // System.out.println(Arrays.toString(arr)); 디버깅코드
        
        Arrays.sort(arr, new Comparator <String>(){
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);    //compareTo는 사전순 배열
            }
        });
        
        for(String s : arr) {
            System.out.println(s);
        }
 
    }
 
}
cs

 

과정 설명과 주석에 적힌 대로 작성한 코드

 

 

2) substring() + Arrays.sort()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
 
 
public class Main {
 
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        String arr[] = new String[str.length()];
        
        for(int i = 0; i < str.length(); i++) {
            arr[i] = str.substring(i, str.length());
        }
        
        Arrays.sort(arr);
        for(String s : arr) {
            System.out.println(s);
        }
    }
 
}
cs

 

찾아보니 이렇게 간단한 방법도 있었다substring은 자바에선 처음 써보는 것 같다

Arrays.sort도 사전순 정렬이 된다

 

 

 


 

반응형
Comments