문제를 보고 HashMap을 활용하면 풀 수 있겠다는 생각을 하여, 문제를 푸는데는 어려움이 없었다.
정답을 맞추고 다른 사람의 코드들을 살펴보니 대부분이 아스키코드를 활용하여 풀어낸 것을 보고 이렇게 풀어낼 수도 있구나 라는 생각을 했다. 하지만 내가 푼 방법이 대체로 존재하지 않기에 코드를 공유해보자 한다.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
HashMap<Character,Integer> map = new HashMap<>();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
for(int i = 0; i < alphabet.length(); i++){
map.put(alphabet.charAt(i),-1);
}
String input = br.readLine();
for(int i = 0; i < input.length(); i++){
char c = input.charAt(i);
if(map.get(c) == -1){
map.replace(c,i);
}
}
for(Character c : map.keySet()){
bw.write(map.get(c)+" ");
}
bw.flush();
bw.close();
br.close();
}
}
alphabet을 직접 임의로 입력하여 for문으로 HashMap에 넣고 다음 for문에서 value값이 -1 이 아니면 map에 인덱스를 넣는 식으로 작성하였다.
아스키코드를 사용하는게 시간상으로도 더 유리할 것이고, 문제의도와 더 가깝다고 생각이 들긴하지만, 어쨌든 정답이니까..ㅎ