-
[백준] 10809번: 알파벳 찾기데일리 커밋 2022. 1. 6. 11:27
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
첫 번째 시도
from string import ascii_lowercase a = input() dic = {} cnt = 0 for i in a: #딕셔너리에 키값과 밸류값을 넣어준다. dic[i] = cnt cnt += 1 answer = [] for i in ascii_lowercase: #알파벳 소문자들을 가져와서 키값에 넣어주고 해당 value 를 가져온다. if i not in dic.keys(): #keys에 없다면 -1을 answer에 넣어준다. answer.append(-1) else: answer.append(dic[i]) #해당 value를 answer에 넣어준다. print(answer)
출력문이 리스트 형태로 나와서 실패!!
두 번째 시도
from string import ascii_lowercase a = input() dic = {} cnt = 0 for i in a: dic[i] = cnt cnt += 1 answer = [] for i in ascii_lowercase: if i not in dic.keys(): answer.append(-1) else: answer.append(dic[i]) print(*answer)
출력은 제대로 되었으나, 중복된 문자가 있을 경우에 뒤에 있는 문자의 value가 나와서 실패!
정답
from string import ascii_lowercase a = input() dic = {} cnt = 0 for i in a: if i not in dic.keys(): #문자열을 넣어줄 때 뒤의 문자열에서 중복값이 있을 경우 넘어간다. dic[i] = cnt cnt += 1 answer = [] for i in ascii_lowercase: if i not in dic.keys(): answer.append(-1) else: answer.append(dic[i]) print(*answer)
문자열을 dict에 넣을 때부터 중복된 문자열을 제거해 준다.
다른 사람 코드
string = input() alphabet = "abcdefghijklmnopqrstuvwxyz" for i in alphabet: print(string.find(i), end = ' ')
find 함수:
string.find(찾을 문자)
string.find(찾을 문자, 시작 Index)
string.find(찾을 문자, 시작 Index, 끝 Index)find 함수 첫번째 인자
- 찾을 문자열 혹은 찾을 문자find 함수 두번째 인자 (생략가능)
- 문자를 찾을때 어디서 부터 찾을지 시작 index. 생략시 0find 함수 세번째인자 (생략가능)
- 문자를 찾을때 어디 까지 찾을지 끝 index, 생략시 문자열 맨 마지막 indexfind 메서드는 "찾을 문자" 혹은 "찾을 문자열"이 존재하는지 확인하고,
찾는 문자가 존재 한다면 해당 위치의 index를 반환해주고
찾는 문자가 존재 하지 않는다면 -1 을 반환합니다.만약에 찾는 문자나 문자열이 여러개 있다면 맨 처음 찾은 문자의 index를 반환하게 됩니다.
'데일리 커밋' 카테고리의 다른 글
[백준] 1085번: 직사각형에서 탈출 (0) 2022.01.08 [백준] 1157번: 단어 공부 (0) 2022.01.07 [백준] 2908번: 상수 (0) 2022.01.05 [백준] 1152번: 단어의 개수 (0) 2022.01.04 [백준] 2920번: 음계 (0) 2022.01.01