백준 10809 자바(HashMap을 이용하여)

seongbin·2025년 3월 30일

문제를 보고 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에 인덱스를 넣는 식으로 작성하였다.

아스키코드를 사용하는게 시간상으로도 더 유리할 것이고, 문제의도와 더 가깝다고 생각이 들긴하지만, 어쨌든 정답이니까..ㅎ

0개의 댓글