Python

[프로그래머스 level1] 가운데 글자 가져오기 - Python

나른한코딩 2021. 7. 18. 15:07

문제 본문

https://programmers.co.kr/learn/courses/30/lessons/12903?language=python3 

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr

 

문제 풀이

1. 첫번째 풀이

엣날에 잠깐 겉핥기식으로 python을 공부했었어서 따로 찾아보지 않고 기억을 더듬어 작성해본 코드이다.

  • 문자열s의 길이를 2로 나눈 값을 middle에 넣어주었다. -> 가운데 인덱스
  • 만약 문자열s의 길이가 홀수 이면, s의 middle번째 인덱스에 있는 값 answer에 넣어주기.
  • 짝수면, middle-1부터 middle까지( [middle-1:middle+1] ) 있는 값 answet에 넣어주기. 

❗️Error & Why 🤔

middle을 int로 형변환을 안해줘서 오류가 났어서 고쳐주었다. (왜 형변화이 필요하지.. 했는데 3번째 풀이에서 깨달음)

def str_middle_1(s):
    middle = int(len(s) / 2)

    if len(s) % 2 != 0:
        answer = s[middle]
    else:
        answer = s[middle-1:middle+1]

    return answer

2. 두번째 풀이

첫번째 풀이가 마음에 안들어 고치던 중, 가운데 글자를 가져오는 과정이 마치  데칼코마니처럼 문자열을 반으로 접어 접히는 부분의 인덱스만 가져오면 되겠다는 생각이 들었다. 그래서 작성한 코드

❗️Error & Why 🤔

얘는 왜 형변환을 안해도 되지.. (얘도 3번째 풀이에서 깨달음)

def str_middle_2(s):
    middle = len(s)

    if middle % 2 == 0:
        middle = (middle - 2) / 2
    else:
        middle = (middle - 1) / 2

    return s[int(middle):-int(middle)]

3. 세번째 풀이

뭔가 한줄로 풀 수 풀 수 있을 것 같아서 다시 고민...

파이썬의 산술연산자를 찾아보았다.

파이썬 산술연산자 검색 결과

swift에서는 '/' 와 '%'만 사용했었는데, '//' 연산자라는게 있었다..

바로 세가지 연산자 비교 실습 ㄱㄱ..

파이썬 산술연산자 테스트

💡A-Ha

  • '/'는 진짜 나눗셈 결과를 리턴해주는 구나.. 그래서 1번째 풀이에서 형변환을 해줘야했고 2번에서는 형변환없이도 되었다는 것을 깨달음..(swift에 익숙해진 결과물)
  • swift에서 '/' 와 파이썬에서 '//'가 같은 역할 메모메모

그걸 사용한 결과...

def str_middle_3(s):
    return s[(len(s)-1)//2:len(s)//2+1]

 

끝!

오랜만에 하니까 재밌네..아직 쉬워서 그런가??ㅎㅎ

반응형

'Python' 카테고리의 다른 글

[ 프로그래머스 ] 거리두기 확인하기 - python  (0) 2022.02.11
DFS / BFS 예제 구현해보기 - python  (0) 2021.08.13
Python 공부 시작!  (0) 2021.07.18