알파벳 찾기 성공
시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 | 256 MB | 91232 | 48718 | 40888 | 53.938% |
문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치,... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
예제 입력 1 복사
baekjoon
예제 출력 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
BufferedReader로 입력값을 받은 후에,
알파벳은 26글자 이므로 26의 길이를 가진 int형 배열 arr을 선언한다
arr의 초기값은 나오지 않은 값 -1로 반복문을 통해 설정해준다
그리고 다음으로 들어오는 입력 값을 String타입의 S 변수에 담아주고
반복문을 통해 S의 각 char(한 글자씩)를 ch에 담아준다
그때 If조건문으로 arr[ch-'a'] == -1이라면
즉 각각의 한 개 글자들 중 첫 번째 글자인 b가 들어왔을 때
'b'-'a' = 1
arr의 첫번째 인덱스 ('b'의 자리)가 -1로 되어 있다면
arr [ch -'a'] = i;
arr의 첫 번째 인덱스 ('b'의 자리)를 i (몇 번째 인덱스인지?)를 담아준다
그렇게 S를 한 글자씩 다 돌면서
각각의 알파벳 위치를 arr에 담아주고
마지막으로는 for-each문으로 arr의 값들을 하나씩 꺼내서 공백을 추가하며 출력한다
'TIL > Algorithm' 카테고리의 다른 글
Java 백준 1157번 문제 - 단어 공부 (0) | 2021.10.05 |
---|---|
Java 백준 2675번 문제 - 문자열 반복 (0) | 2021.10.04 |
Java 백준 11720번 문제 (0) | 2021.10.02 |
Java 백준 11654번 문제 (0) | 2021.10.01 |
Java 백준 1065번 문제 (0) | 2021.09.30 |