PS/알고리즘 문제풀이
[백준] 2204번 도비의 난독증 테스트(java)
javajoha
2022. 10. 12. 14:25
https://www.acmicpc.net/problem/2204
2204번: 도비의 난독증 테스트
꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실
www.acmicpc.net
2204번 도비의 난독증 테스트 문제 링크입니다.
핵심
HashMap을 사용하여 기존의 문자열을 저장해주고, 전부 소문자로 바꾼다.
정답 코드
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<String,String> hashMap = new HashMap<>();
while (true){
int n = sc.nextInt();
if (n==0)break;
String[] str = new String[n];
for (int i= 0; i<n;i++){
str[i] = sc.next();
}
for (int i =0;i<n;i++){
String temp = str[i].toLowerCase();
hashMap.put(temp,str[i]);
str[i] = str[i].toLowerCase();
}
Arrays.sort(str);
System.out.println(hashMap.get(str[0]));
}
}
}
해설
HashMap을 선언한다. 이유는 문자열을 비교할 때 전부 소문자로 바꾸어서 비교를 할 건데,
기존의 문자열을 기억해야 하기 때문이다.
n개의 문자열을 받는데, 만약 n이 0이 들어오면 종료한다.
key값에는 소문자로 변환한 값을 넣는다. value값에는 기존의 문자열을 넣는다.
문자열 배열 str을 정렬시킨다.
정렬된 배열에서 첫 번째 배열의 value값을 출력한다.
개선점이나 오류가 있다면 댓글 부탁드립니다.