개발자 미니민의 개발스터디

[백준 JAVA] 10809번 풀이 - 알파벳 찾기 (재도전!)

by mini_min

package baekjoon;

import java.util.Scanner;
 
/**
 * 알파벳 찾기
 * 소문자로 이뤄진 단어 s가 주어진다.
 * 각각 알파벳에 대하여 단어가 포함된 경우 처음 등장하는 위치를,
 * 포함되지 않은 경우 -1 이 출력되도록 하시오.
 */
public class _10809 {
	
	public static void main(String args[]){
		
		Scanner sc = new Scanner(System.in);
		
		String s = sc.next();
		char [] alpha = new char[] {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
		
		
		for ( int i = 0; i < alpha.length; i++ )
		{
			if ( s.indexOf(alpha[i]) > -1 )
			{
				System.out.print(s.indexOf(alpha[i]) + " ");
			}
			else //없는 경우
			{
				System.out.print("-1" + " ");
			}
		}
		
		//1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
		//1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 7 -1 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
		
		sc.close();
	}
}

 

예전에 띠 구하기를 저렇게 배열을 만들어서 풀었던 기억이 나서 ...ㅎ

풀었는데 이 문제는 아스키 코드 값을 가지고 풀면 쉽게 풀 수 있더라!!!!

 

 

다시 풀어본 자바 코드 

package baekjoon;

import java.util.Scanner;
 
/**
 * 알파벳 찾기
 * 소문자로 이뤄진 단어 s가 주어진다.
 * 각각 알파벳에 대하여 단어가 포함된 경우 처음 등장하는 위치를,
 * 포함되지 않은 경우 -1 이 출력되도록 하시오.
 * 
 * 다시 풀이. 이렇게 푸는 것이 아닌 아스키 코드를 활용한다. 
 */
public class _10809_2 {
	
	public static void main(String args[]){
		
		Scanner sc = new Scanner(System.in);
		
		String s = sc.next();
		int arr[] = new int[26];
		
		for (int i = 0; i < 26; i++) {
			arr[i] = -1;
		}		
		
		for (int i = 0; i < s.length(); i++) {
			char ch = s.charAt(i);

			if (arr[ch - 'a'] == -1) {
				arr[ch - 'a'] = i;
			}
		}
		
		for (int var : arr) {
			System.out.print(var + " ");
		}
		
		sc.close();
	}
}

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기