happy coding
[java] 10809. 알파벳 찾기 본문
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