본문 바로가기
Learning-log/Algorithm 문풀

백준(파이썬, python) - 10809번 알파벳 찾기 (2022.10.28)

by why제곱 2022. 10. 28.

1. 10809번

 

1) 문제

 

2) 풀이

3) 문법 및 풀이과정

이번 문제를 풀고 실습해보는 것이 정말 중요하다고 생각했다. 분명 파이썬 문법 공부할 때 find함수를 봤는데, 직접 코드를 짤 때는 바로 떠올리지 못했으니 말이다. 한편으로는 이렇게 직접 코드를 짜보는 것도 좋은 경험인 것 같기도 하다.

 

a부터 z를 list에 넣는다. 이 때 넣는 방식은 띄어쓰기 없이 abcd....z까지를 하나의 문자열로 설정해도 되고 아스키코드를 활용할 수도 있다. 

가장 간단한 방법은 find를 이용하는 것이었지만 find함수를 이용하지 않고 코드를 짤 때는 for문을 이중으로 활용했다. 첫번빼 for문은 각 알파벳을 반복하는 것이었고 두번째 for문은 그 알파벳이 입력값으 0번째 글자부터 마지막 글자까지와 비교하여 일치하는 위치가 있는지 탐색하기 위함이었다.

이 때, if문을 활용하여 문자의 일치여부를 확인했고 일치할 경우 반드시 break를 해줘야했다. 그렇지 않는다면 가장 처음 등장하는 위치를 찾은 이후에도 if문을 반복하여 문자열 끝까지 훑게 되고 'baekjoon'에서 'o'와 같이 여러번 알파벳이 쓰인 경우에 뒤에 나온 'o'의 위치도 숫자로 출력하게 되는 불상사가 발생한다.

또한 주어진 문자열 내에 해당 알파벳이 없는 경우를 위해 check = 0 으로 지정하고 각 자리의 문자가 알파벳과 일치하지 않을 때마다 1을 더하도록 하여 최종적으로 check와 문자열의 길이가 일치하면 모든 자리에 해당 알파벳이 없는 것이므로 -1이 출력되도록 했다. 이 때, 처음 check=0을 정의한 위치도 중요한데 반드시 두번째 for문이 시작하기 전에 정의를 해야 한다. for문 안에 정의를 하면 숫자가 이상하게 나온다 .. !