-
[Algorithm] 백준/Bronze/10809. 알파벳 찾기Algorithm/문제 풀이 2023. 4. 6. 14:06
하루입니다.
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
오늘의 문제는 알파벳 위치를 찾는 문제.
- 26칸을 가지는 배열을 선언해서 -1을 넣어 주자.
- 알파벳 위치를 찾는 건 charAt 사용해서 - 97 해주고 (대문자는 -65)
- 위처럼 하면 a가 0부터 시작함! 1부터 시작하고 싶으면 -96 해주면 된당.
- 첫 번째 출력 위치는 for문 안의 i를 사용하면 되고
- 첫 번째 출력 위치만 넣기 위해서 배열값이 -1일 때만 넣는당
1. BufferedReader, StringBuilder 사용
import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int[] arr = new int[26]; for(int i = 0; i < 26; i++) { arr[i] = -1; } String str = br.readLine(); for(int i = 0; i < str.length(); i++) { int a = (int)str.charAt(i) - 97; if(arr[a] == -1) arr[(int)str.charAt(i) - 97] = i; } for(int a:arr) { sb.append(a).append(" "); } System.out.println(sb); } }2. BufferedReader, soutt 사용
import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 알파벳 숫자 26을 가지는 배열을 생성한다. // 배열에 -1을 모두 넣는다. // 반복문을 사용한다. // 한 글자씩 읽어온다. // arr[(int)charAt(i) - 97] = i 씩 해준다. // 배열 출력하기 int[] arr = new int[26]; for(int i = 0; i < 26; i++) { arr[i] = -1; } String str = br.readLine(); for(int i = 0; i < str.length(); i++) { int a = (int)str.charAt(i) - 97; if(a != -65 && arr[a] == -1) arr[(int)str.charAt(i) - 97] = i; } for(int a:arr) { System.out.print(a + " "); } } }결과

여담. 알고리즘 문제 풀 때 꼭 코드를 비교하게 되는 온라인 알고리즘 스승님(?)과 같은 분이 있는데, 그 분과 코드 진행 방식이 거의 일치해서 뿌듯했다. 글고 StringBuilder에 익숙해지려 노력 중인데, .append()로 구분짓다 보니 오히려 직관적이라는 생각이 들었다.
깃허브가 궁금하시다면?
'Algorithm > 문제 풀이' 카테고리의 다른 글
[Algorithm] 백준/Bronze/2675. 문자열 반복 (getBytes()) (0) 2023.04.07 [Algorithm] 백준/Bronze/10757. 큰 수 A+B (BigInteger) (0) 2023.04.06 [Algorithm] 백준/Bronze/2525. 오븐 시계 (바보) (2) 2023.04.05 [Algorithm] 백준/Silver/2193. 이친수 (0) 2023.04.03 [Algorithm] 백준/Silver/9461. 파도반 수열 (반복문, 재귀함수) (0) 2023.04.03