BOJ 10809 알파벳 찾기
- 문제 링크
https://www.acmicpc.net/problem/10809
- 문제 해설
boj 10808 알파벳 개수 문제에서 조금 변형된 문제이다.
기본적인 동작 방식은 비슷하게 하였고 몇 가지를 추가하였다. cnt배열은 각 알파벳이 단어에 처음 등장하는 인덱스를 담는다.
알파벳 'a'부터 'z'까지 돌면서 검사하는 방식이다. 각각의 알파벳이 입력된 단어에 포함되는 경우, 첫 위치를 출력해야하므로 알파벳이 단어에서 발견되면 바로 다음 알파벳으로 넘어가도록 하였다.
cnt배열이 0인 경우가 두 가지 경우가 있다. 알파벳이 단어에 포함되지 않아서 0인 경우와, 알파벳이 단어의 첫번째 글자로 등장해서 0인 경우이다.
cnt배열의 값이 0인 경우를 알파벳이 단어에 포함되지 않은 경우로만 고정시키기 위해서, 알파벳이 단어의 첫번째 글자 인덱스를 0번째에서 1번째로 바꾸었다. 출력해줄 때, -1을 하여 출력하면 정상적인 값이 나온다.
- 코드 보기
import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String str = br.readLine(); int cnt[] = new int[26]; for (char a = 'a'; a <= 'z'; a++) { for (int i = 0; i < str.length(); i++) { if (a == str.charAt(i)) { cnt[a - 97] = i + 1; break; } } } for (int i = 0; i < 26; i++) { if (cnt[i] == 0) bw.write(Integer.toString(-1) + " "); else bw.write(Integer.toString(cnt[i] - 1) + " "); } br.close(); bw.flush(); bw.close(); } }
'PS > BOJ' 카테고리의 다른 글
BOJ 11655 ROT13 [Java] (0) | 2021.07.21 |
---|---|
BOJ 10820 문자열 분석 [Java] (0) | 2021.07.21 |
BOJ 10808 알파벳 개수 [Java] (0) | 2021.07.21 |
BOJ 10866 덱 [Java] (0) | 2021.07.20 |
BOJ 10845 큐 [Java] (0) | 2021.07.18 |