Python/Baekjoon

백준 10809번 문제 풀이 - 공부하는 도비

DOVISH WISDOM 2020. 12. 9. 19:10  
728x90
반응형

www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

저는 이 문제를 총 3가지로 풀어보았어요.

1. find() 함수 사용

2. index() 함수 사용

3. 아무런 스킬 없이 올바른 답이 나오도록 코딩

 

1번에서 3번으로 가면 갈 수록 코드의 길이는 엄청나게 차이가 납니다.

따라서, 여러분 파이썬 함수 공부를 꾸준히 합시다..!

 

파이썬 문자열 안에서 문자의 위치 찾는 함수는 대표적으로 find(), index()가 있죠?

두 함수의 가장 큰 차이는 find()함수는 찾는 값이 없으면 -1 을 반환합니다.

하지만, index()의 경우 문자 또는 문자열을 찾지 못할 경우 예외를 발생합니다.

 

1. find() 함수 사용

소스코드

위에서 설명한 것 처럼 find()는 따로 예외 처리를 해주지 않아도 알아서 -1 을 반환하기 때문에, 이 문제에 가장 잘 어울리는 함수 입니다.

참 간단하죠? 처음부터 find()함수가 떠오른다면 이렇게 코드를 짜도 되고, 정답은 없기 때문에 저는 다양하게 프로그래밍 해보았습니다.

 

2. index() 함수 사용

find() 코드와 다른 점은 찾고자 하는 값이 문자열에 없는 경우 -1 을 출력할 수 있게 해준점입니다.

 

3. 아무런 스킬 없이 올바른 답이 나오도록 코딩

우선 길이도 상당하죠?

 

 

설명하기에 너무 복잡하네요 ㅋㅋㅋㅋㅌㅋㅋㅋ이 코드는 이렇게도 답을 구할 수는 있다를 보여주기 위함이니, 

아직 못 푸신 분이나 조금 더 짧게 코딩하고 싶으신 분은 이 과정을 패스해주세요ㅎㅎㅎ 

호오옥시 궁금하신 분이 계시면 따로 설명해드리겠습니닿

 

(참고) import string과 string.ascii_lowercase는 여기서 자세히 다루진 않겠습니다. 궁금하신 분은 아래 링크로!

2020/12/09 - [파이썬] - [파이썬] string 모듈을 이용한 알파벳(대,소문자), 숫자, 특수문자 출력하기 - 공부하는 도비