happy coding

[java] 10809. 알파벳 찾기 본문

coding study/baekjoon

[java] 10809. 알파벳 찾기

yeoonii 2023. 7. 24. 03:53
import java.io.*;
import java.util.*;
import java.lang.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 단어 입력 받기 > 길이는 100을 넘지 않고 소문자로 이루어짐
        String word = br.readLine();

        // 알파벳 넣을 맵 생성
        Map<Character, Integer> position = new HashMap<>();

        /*
        각각 알파벳이 처음 등장하는 위치를 공백으로 구분해 출력
        포함되지 않다면 -1, 첫번째 글자 위치는 0
         */

        // 해당 알파벳 첫 위치 저장 : 
        for (int i = 0; i < word.length(); i++) {	//word의 모든 문자를 순회
            char currentChar = word.charAt(i);	//word 문자열의 i번째 인덱스에 해당하는 문자 가져와서 currentChar에 저장
            if (!position.containsKey(currentChar)) {	//position의 hashmap에 currentChar에 해당하는 키가 존재하는지 체크
                position.put(currentChar, i);	//키가 없는 경우에는 해당 문자와 인덱스를 position에 추가
            }
        }
        // 모든 알파벳에 대해 위치 출력
        StringBuilder result = new StringBuilder();
        for (char alpha = 'a'; alpha <= 'z'; alpha++) {	//각 알파벳을 순서대로 순회
            if (position.containsKey(alpha)) {
                result.append(position.get(alpha)).append(" ");
            } else {
                result.append("-1 ");	//알파벳이 없는 경우 -1을 추가
            }
        }
        System.out.println(result.toString().trim());	//양 끝 공백 삭제해 출력
    }
}

근데 이게 alpha가 a부터 z까지 순회하는데 왜 순서대로 순회하는지는 이해가 안된다. 검색을 했더니 이게 공식인가..

'coding study > baekjoon' 카테고리의 다른 글

[java] 1110. 더하기 사이클  (0) 2023.07.24
[java] 11659. 구간 합 구하기 4  (0) 2023.07.24
[java] 2475. 검증수  (0) 2023.07.24
[java] 15964. 이상한 기호  (0) 2023.07.24
[java] 9086. 문자열  (0) 2023.07.24
Comments