백준 10809

2018-11-25

백준 10809번 알파벳 찾기

img

public class Problem10809 {
    public static void main(String[] args) {
        // a = 97 , z = 122
        Scanner s = new Scanner(System.in);
     
        String input = s.nextLine();
        char[] inputChar = input.toCharArray();
        
        int cursor = 0;
        
        Integer[] resultInteger = new Integer[26];
                
        for (char c : inputChar) {
            //a,b,c.....z까지 검사
            for(int i = 97; i<=122; i++) {
                if(i == (int)c) {
                    // 같은 알파벳 유효성 검사.
                    if(resultInteger[i-97] == null) {
                     resultInteger[i-97] = cursor;
                     cursor++;
                    break;
                    } else {
                        cursor++;
                    }
                    
                }
                
            }
            
        }
        
        for (Integer i : resultInteger) {
            // 없는 알파벳이면 null임 출력때 -1 처리
            if(i == null) {
                i = -1;
            }
            System.out.print(i +" ");
        }
    }
}

소요시간 : 25분

해설

먼저 a부터z 까지 저장할 Integer형 변수배열을 하나 생성한다.

초기값은 전부 null로 들어가 있다.

여기서 26개를 선언를 해줬는데 resultInteger[0]는 a의 시작 값,resultInteger[25]는 z의 시작 값을 주었다.

그런다음 입력받은 문자를 문자열 배열로 변환해준 후

for each 문으로 하나씩 확인한다.

첫번째 문자가 테스트 중인걸 확인하기 위해서 cursor 변수를 선언해주었다.

img

아스키코드를 이용하여 첫번째 커서에있는 알파벳을 비교했다.

baekjoon에서 oo는 같은 알파벳이기 때문에, 중복처리를 하기 위해

만약 각 알파벳이 들어갈 Integer 배열이 할당이 됬다면 cursor값만 1증가시켜주었다.

마지막은 출력으로 null값을 받은 Integer 배열 변수는 그 알파벳이 존재하지 않기 때문에

-1 처리를 해주었다.