🔑알고리즘/baekjoon
백준 10809 : 알파벳 찾기 - 자바 문제 풀이
pkyung
2021. 7. 28. 16:13
반응형
10809번 문제입니다.
이 문제는 예제 입력 출력 부분을 보시면 이해하실 수 있습니다.
a,b,c,d,e.....,z까지의 위치를 표현하는 것인데 입력된 단어에 특정 알파벳이 없다면 -1로 출력합니다.
저는 여기서 가장 먼저 배열을 만들어야겠다는 생각이 들었습니다.
26칸 짜리 char 배열을 만들기로 생각했는데요. 이유는 문자형을 int로 변환하여 아스키코드 사용함으로 코드 길이를 줄이기 위함입니다.
문자 배열의 이름은 alp, 입력된 문자열을 ss라는 문자 배열로 만들어주었습니다.
alp 배열은 -1로 초기화 해주었습니다.
배열을 특정한 수로 초기화 하는 방법은 java.util.Arrays를 사용해야합니다.
Arrays.fill(배열,특정한 수) 이렇게 바꿀 수 있습니다.
for문 사용은 도식화를 해보는 것이 좋습니다.
if(ss[0]==97)이면 alp[0]=0; break; (break를 하는 이유는 문제에서 처음 나온 문자의 위치이기 때문입니다.)
if(ss[1]==97)이면 alp[0]=1;break;
if(ss[2]==97)이면 alp[0]=2;break;
.
.
.
if(ss[0]==122)이면 alp[0]=0; break;
이런 식으로 되겠죠?
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] alp = new int[26];
Arrays.fill(alp, -1);
String s = sc.next();
char[] ss = s.toCharArray();
for (int i = 0; i < alp.length; i++) {
for (int j = 0; j < ss.length; j++) {
if (ss[j] == i + 97) {
alp[i] = j;
break;
}
}
}
for (int i = 0; i < alp.length; i++) {
System.out.print(alp[i]+ " ");
}
}
}
정답임을 확인했습니다.
반응형