Notice
Recent Posts
Recent Comments
Link
CodeClover
[JAVA] 백준 2204_도비의 난독증 테스트 본문
[문제 링크]
https://www.acmicpc.net/problem/2204

📌 문제 탐색하기
글자의 대소문자를 구분하지 않고 사전순으로 정렬해서 해당 정렬이 사전순으로 가장 앞에 있는 단어를 출력하는 문제이다.... 즉, 2개의 포인트 ( 대소문자 구분 X , 사전순 가장 앞 순서 출력 ) 를 만족하면 된다.
📌 가능한 시간복잡도
각각 테스트 케이스에서 입력받은 n개의 단어를 처리하니까
1. 입력받은 단어 n개를 배열에 저장하는 입력처리 : O(n)
2. n개의 단어를 반복해서 사전순으로 비교를 진행하니까... 각각 단어의 길이값을 k라고 하면 비교처리 : O(n*k)
따라서, 가능한 시간복잡도는 O(n*k)이라고 생각합니다.
📌 코드 설계하기
1. 단어 개수 입력 받기 n개
2. 입력값이 0이면 종료하기
3. 입력한 단어 그대로 출력해야하니까 입력값 저장하는 배열 하나, 대소문자로 모두 변경해서 비교해야하니까 대문자로만 혹은 소문자로만 변경해서 저장한 배열 하나, 총 2개의 배열을 만들기
4. 각각 n개의 단어 입력하기
5. 입력받은 단어를 2개의 배열에 각각 저장하기
6. 사전순으로 가장 앞에 있는 단어 ... index값이 가장 선두인것을 출력하면 된다.
📌 정답 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int n = sc.nextInt();
if (n == 0) break;
sc.nextLine();
String[] originalWords = new String[n];
String[] lowerCaseWords = new String[n];
for (int i = 0; i < n; i++) {
originalWords[i] = sc.nextLine();
lowerCaseWords[i] = originalWords[i].toLowerCase();
}
int index = 0;
for (int i = 1; i < n; i++) {
if (lowerCaseWords[i].compareTo(lowerCaseWords[index]) < 0) {
index = i;
}
}
System.out.println(originalWords[index]);
}
sc.close();
}
}
📌 체크!
- 소문자로만 변경 : toLowerCase()
- 대문자로만 변경 : toUpperCase()
'코딩테스트' 카테고리의 다른 글
| [JAVA] 백준 2303_숫자게임 (2) | 2025.01.24 |
|---|---|
| [Python] 백준 (1) | 2025.01.23 |
| [JAVA] 백준 2644_촌수계산 (0) | 2025.01.21 |
| [JAVA] 백준 17204_죽음의 게임 (1) | 2025.01.19 |
| [JAVA] 백준 1463_1로 만들기 (0) | 2025.01.17 |