본문 바로가기
공부/Coding Test

[Baekjoon/Python]10809_알파벳 찾기

by 츄느 CHUNNEE 2021. 12. 23.
728x90
반응형
■ 느낀점
  - 파이썬 모듈을 활용하면 더 쉽다.(string 모듈 : 알파벳 출력하기)
  - 자릿수에 해당되는 cnt를 알파벳 대응 할 때마다 초기화 한다.
  - 적절한 break 및 for/if 문 활용할 때 애매하면 debug해보면서 한다.
문제

문제 : 알파벳 소문자로만 이루어진 단어S에 대해 단어에 포함되어 있는 경우엔 처음 등장 위치를, 포함되지 않는 경우엔 -1 출력하시오.

입력 : 단어S

출력 : -1 or 처음 등장 위치를 공백으로...

 코드
#10809_find_alphabet

import sys
import string

s = sys.stdin.readline()

for j in string.ascii_lowercase:
    cnt = 0
    if j in s:
        for i in s:
            if i != j:
                cnt += 1
            else:
                print(cnt,end=" ")
                break
    else:
        print(-1,end=" ")

알파벳을 출력하는 string 모듈을 활용해보니 list로 알파벳을 표현할 필요가 없었다. 문제를 보자마자 든 생각이다. 알파벳을 리스트로 표현하지 않을 수 없을까?

 

풀이

1. 문자열 입력과 string 모듈

string 모듈 코드 소개

나는 input 보다 sys모듈을 활용한 입력을 더 많이 활용한다. 문자 구성이 어렵지만 연습한다고 생각중이다.

ASCII 코드를 소문자 형태로 구성하고 string모듈을 통해 알파벳을 만들었다.

 

2. Logic 구성

logic에 대한 코드 소개

아직까지 파이썬 문법에 익숙하지 않아서 for, if 문을 주구장창 쓰는 경향이 있다. 그래서 복잡도가 올라가는 듯하다.(한눈에 남을 이해시킬 수 있는 알고리즘이 실력!)

 

알파벳과 입력값을 1대1 매칭 시키려했다. 

중요한 건 인덱스값을 0부터 증가시키는 것과 처음 등장한 위치라 break문으로 끊어주는 것, 마지막으로 알파벳이 없을 때 -1로 마무리 하는 걸 표현하다고 생각했다.

또 다른 접근

더 좋은 방법이 있는 것 같아서 구현하는 대로 Update 하는 걸로...

728x90
반응형

'공부 > Coding Test' 카테고리의 다른 글

[backjoon/python]2908_상수 비교  (0) 2022.05.05

댓글