본문 바로가기
JAVA

[JAVA][백준] 10809_알파벳

by saemsaem 2024. 4. 15.

import java.util.Scanner;

public class Zalphbet_10809 {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        int[] alph = new int[26];
        for (int a = 0; a < 26; a++) {
            alph[a] = a+101;
        }

        for (int b = 0; b < str.length(); b++) {
            char tmp = str.charAt(b);

            for (int k = 0; k < 26; k++) {
                if ((tmp+4) == alph[k]) {
                    alph[k] = b;
                }
            }
        }

        for (int c = 0; c < 26; c++) {
            if (alph[c] >= 101) {
                alph[c] = -1;
            }
        }

        for (int i = 0; i < 26; i++) {
            System.out.print(alph[i]+" ");
        }
    }
}

알파벳 26개가 들어갈 수 있는 int배열을 생성하고, 101부터 숫자가 차례대로 들어갈 수 있도록 초기화했다.

입력받은 string의 길이만큼 반복문을 돌면서, 해당 알파벳이 몇번째 알파벳인지 확인했다.

int배열을 101부터 시작했기 때문에, tmp에 4를 더하면 a부터 z까지 모두 확인할 수 있다.

알파벳의 자리를 찾았다면, string에서의 몇번째인지를 해당 알파벳 배열의 자리에 넣어준다.

그리고 값이 변하지 않은 (101이상인) 숫자를 가진 알파벳 배열은 모두 -1로 초기화 한다.

 

아스키코드로 풀어보려고 해서 처음에 97보다 큰 숫자면(소문자가 97부터 시작) 다 -1로 바꿨더니 답이 틀렸다. 입력받은 stirng의 길이가 98일 수도 있기 때문이다.

그래서 아스키코드보다 4를 더한 값인 101로 풀었더니 정답이었다!!!

항상 질문게시판에 글을 쓰려고 들어가면 내 코드의 문제가 보이는 것 같다.

'JAVA' 카테고리의 다른 글

[JAVA][백준] 10989_수 정렬하기 3 (BufferedReader)  (0) 2024.04.16
[JAVA][백준] 1978_소수 찾기  (0) 2024.04.15
[JAVA][백준] 8958_OX퀴즈  (0) 2024.04.15
[JAVA][백준] 3052_나머지  (0) 2024.04.15
[JAVA][백준] 1152_단어의 개수  (0) 2024.04.15