백준 10809
2018-11-25
백준 10809번 알파벳 찾기
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 변수를 선언해주었다.
아스키코드를 이용하여 첫번째 커서에있는 알파벳을 비교했다.
baekjoon에서 oo는 같은 알파벳이기 때문에, 중복처리를 하기 위해
만약 각 알파벳이 들어갈 Integer 배열이 할당이 됬다면 cursor값만 1증가시켜주었다.
마지막은 출력으로 null값을 받은 Integer 배열 변수는 그 알파벳이 존재하지 않기 때문에
-1 처리를 해주었다.