728x90
문제
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
해결
각각의 알파벳에 대해서 입력받은 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성했다.
공교롭게도 자바에 똑같은 기능을 가진 함수가 있어 손쉽게 해결할 수 있었다.
indexOf(String keyword)
문자열 중 입력받은 문자가 포함돼있으면 해당 문자의 위치(index 값)을 리턴하고 문자가 포함돼있지 않으면 -1을 리턴한다.
구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String s = sc.next(); // 단어를 문자열로 입력받음
int[] res = new int[26];
// a ~ z의 포함을 확인해야 하므로 길이가 26인 배열 생성
int letter = 'a'; // a의 포함부터 확인해야 하므로 변수를 a(97)로 초기화
for (int i = 0; i < res.length; i++) { // 배열의 길이만큼 for문 실행
res[i] = s.indexOf(letter); // i번째 원소를 입력받은 문자의 indexOf 값으로 저장
letter++; // a ~ z 확인해야 하므로 증감식 작성
// 첫 번째 원소의 값은 a의 포함 유무, 26번째 원소의 값은 z의 포함 유무
}
for (int i = 0; i < res.length; i++) { // 배열의 길이만큼 for문 실행
System.out.print(res[i] + " "); // indexOf 값이 저장된 배열의 원소를 차례대로 출력
}
}
}
|
cs |
결과

728x90
'Algorithm > Beakjoon' 카테고리의 다른 글
[Java] baekjoon 2753 : 윤년 / if문 (0) | 2021.07.18 |
---|---|
[Java] baekjoon 9498 : 시험 성적 / if문 (0) | 2021.07.17 |
[Java] baekjoon 1330 : 두 수 비교하기 / if문 (0) | 2021.07.16 |
[Java] baekjoon 2902 : KMP는 왜 KMP일까? / 문자열 (0) | 2021.07.14 |
[Java] baekjoon 1546 : 평균 / 1차원 배열 (0) | 2021.07.13 |
댓글