반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
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
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
String T = st.nextToken();
String[] arr = new String[N];
for(int i = 0 ; i < N ; i++) {
arr[i] = br.readLine();
}
Arrays.sort(arr);
String answer = "";
int idx = 0;
for(String s : arr) {
if(s.startsWith(T)) { // 문자열 T로 시작하는 단어들 中
if(idx + 1 == K) { // K번째 원소라면 출력
System.out.println(s);
return;
}
idx += 1; // K번째 원소가 아니라면, 인덱스 + 1
}
}
}
}
|
cs |
🧩 해결 아이디어
• 정렬
- String형 배열에 문자열을 입력받고, 오름차순 정렬한다.
- int형 변수 idx를 설정하고, 문자열 T로 시작하는 단어인 경우, 이 idx에 값을 1씩 더한다.
- idx가 0에서 시작하게 했으므로, idx + 1이 K 값과 같을 때, 정답을 출력하고 반복문을 탈출한다.
🔺 다른 풀이들
- T로 시작하는 문자열 배열을 생성하고, 여기에 값을 넣어 해당 배열의 K번째 값을 출력하도록 하셨다.
(시간 복잡도 : O(NT + L N log N))
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static final int MAX_N = 100;
public static int n, k;
public static String t;
public static int cnt;
public static String[] str = new String[MAX_N];
public static String[] words = new String[MAX_N];
// a가 b로 시작하는지 확인하는 메소드
public static boolean startsWith(String a, String b) {
if((int) a.length() < (int) b.length()) return false;
// a와 b가 완벽히 동일한지 확인
for(int i = 0; i < (int) b.length(); i++) {
if(a.charAt(i) != b.charAt(i))
return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
k = sc.nextInt();
t = sc.next();
for(int i = 0; i < n; i++) {
str[i] = sc.next();
// 문자열 t로 시작하는 경우인지 확인하고, 그 경우에만 목록에 넣음
if(startsWith(str[i], t))
words[cnt++] = str[i];
}
Arrays.sort(words, 0, cnt);
System.out.print(words[k - 1]);
}
}
💬 느낀 점
다른 문제도 잘 풀장...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형
'코테 > 코드트리' 카테고리의 다른 글
[코드트리/NOVICE MID] 연속되는 수 3 (JAVA) (0) | 2023.10.26 |
---|---|
[코드트리/NOVICE MID] 연속되는 수 2 (JAVA) (0) | 2023.10.26 |
[코드트리/NOVICE MID] 순서를 바꾸었을 때 같은 단어인지 판별하기 (JAVA) (0) | 2023.10.24 |
[코드트리/NOVICE MID] 2개씩 그룹짓기 (JAVA) (0) | 2023.10.24 |
[코드트리/NOVICE MID] 두 개의 동일한 수열 (JAVA) (0) | 2023.10.23 |