CodingTest/백준 온라인 저지(BOJ)

[백준,BOJ 10809] 알파벳 찾기(JAVA 구현)

뜸부깅 2020. 10. 8. 13:32
반응형

-해법

 

import java.util.Scanner;
import java.util.Arrays;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        
        String s = in.next();
        int arr[] = new int[26];
        
        Arrays.fill(arr, -1);
        
        for(int i = 0; i<s.length();i++){
        	if(arr[s.charAt(i)- 97] == -1)
        	arr[s.charAt(i)- 97] = i;
           
        }
        
        for(int i =0;i<arr.length;i++) {
        	System.out.print(arr[i]+" ");
        }
        
        in.close();
    }
}

  이번 문제도 다시 풀어보는 문제인데, 생각 외로 복잡하게 풀어버렸다... ㅋㅋㅋ 

  1. 알파벳 수의 배열을 선언 후, -1로 초기화

  2. 입력받은 문자열에서 문자를 추출 후, -97을 통해 인덱스로 활용하여 해당 위치 값을 배열에 저장 ( a는 아스키코드 값이 97이므로 a는 0, b는 1... 식으로)

  3. 출력

 

  알고보니 단순히 String 클래스의 indexOf() 메서드의 사용법에 대해서 묻는 문제였다. indexOf()는 특정 문자의 위치를 반환하며, 존재하지 않을 경우 -1을 반환하는 메서드이다.

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String word = sc.next();
        for (char c = 'a' ; c <= 'z' ; c++)
            System.out.print(word.indexOf(c) + " ");
    }
}

  이렇게 a~z의 반복문을 통해 입력된 문자열에서 각각의 알파벳이 등장하는 위치인 인덱스 값을 출력만 해주면 된다!

바보 같다!