[백준 JAVA] 10809번 풀이 - 알파벳 찾기 (재도전!)
by mini_minpackage 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();
}
}
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 1152번 풀이 - 단어의 개수 (0) | 2023.06.21 |
---|---|
[백준 JAVA] 2675번 풀이 - 문자열 반복 (0) | 2023.06.21 |
[백준 JAVA] 11720번 풀이 - 숫자의 합 (0) | 2023.06.20 |
[백준 JAVA] 11654번 풀이 - 아스키 코드 (0) | 2023.06.18 |
[백준 JAVA] 9086번 풀이 - 문자열 (0) | 2023.06.18 |
블로그의 정보
개발자 미니민의 개발로그
mini_min