[백준]알파벳 찾기

Rmi_Kim·2021년 6월 23일
0

백준

목록 보기
4/5
post-thumbnail

📍 문제

💡 접근

더 쉬운 방법을 생각 못하고 어렵게 접근하려고 했다 😂
두 가지 풀이 방법으로 접근 할 수 있다.


  1. 아스키 코드 값 이용
    • 알파벳 수의 배열을 선언 후, -1로 초기화
    • ch(입력받은 문자열에서 추출한 문자)의 문자의 위치를 우리가 앞서 만든 arr 배열의 값으로 바꿔준다. arr 배열의 인덱스는 ch 가 갖고 있는 문자 인코딩 값(=아스키코드 값과 동일)에 'a' 또는 97 을 빼준다.
  2. indexOf 이용
    • indexOf()는 특정 문자의 위치를 반환하며, 존재하지 않을 경우 -1을 반환하는 메서드
    • a~z의 반복문을 통해 입력된 문자열에서 각각의 알파벳이 등장하는 위치인 인덱스 값을 출력

👩‍💻 코드

1. 아스키 코드 값 이용
public class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String S = br.readLine();
    	
    	int[] arr = new int[26]; // 알파벳 수 배열 선언
        Arrays.fill(arr, -1); // arr을 -1로 초기화
        
		for(int i = 0; i < S.length(); i++) {
			char ch = S.charAt(i);
    
			if(arr[ch - 'a'] == -1) {	// arr 원소 값이 -1 인 경우에만 초기화
				arr[ch - 'a'] = i;
			}
		} 
        
        for(int n : arr) {
			System.out.print(n + " ");
		}
	}
}    
2. IndexOf 이용
public class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String S = br.readLine();
        
        for (char c = 'a' ; c <= 'z' ; c++)
            System.out.print(S.indexOf(c) + " ");
            
	}
}    

🔗 링크

https://www.acmicpc.net/problem/10809

profile
기록하는 개발자

0개의 댓글