JSITCLUB
파이썬 - 프로그래머스 - 가운데 글자 가져오기 본문
프로그래머스 level 1
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
-
s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s | return |
"abcde" | "c" |
"qwer" | "we" |
코딩테스트 연습 - 가운데 글자 가져오기
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret
programmers.co.kr
풀이 및 코드 |
문제요약
이 문제는 문자열에서 가운데 글자 갖고 오는 문제입니다. 단, 홀수일 때는 한 글자, 짝수일 때는 두 글자를 갖고 오라고 하네요.
문제해설
우선 문자열에서 중간에 있는 글자를 갖고 오는 방법은 인덱싱이나 슬라이싱이 있으니 그것을 사용하고 문제에서 글자 수가 홀수일 때와 짝수일 때의 결과를 달리 하라고 하니 조건문도 사용해야겠네요.
#1
문자열의 길이가 짝수 일 때와 홀수일 때를 구분합니다.(참조 https://jsitclub.tistory.com/18)
문자열의 길이는 len()을 사용합니다.
def solution(s):
answer = ''
if len(s)%2==0:
else:
return answer
#2
먼저 len의 결과나 홀수 일때 가운데 한 글자의 위치를 찾아봅니다.
이때 아래와 같이 오른쪽 쉘 창에서 직접 실행해주면 편리합니다.
위에서 보면 길이(len()의 결과)는 5, 가운데 글자의 위치는 2라는 것을 알 수 있습니다.
같은 방법으로 글자 수가 7개 일 때를 테스트해보면 가운데 위치가 3이라는 것을 알게 됩니다.
여기서 우리는 홀수 일 때는 "길이/2의 몫의 정수 값"이 가운데 위치라는 것을 알게 됩니다. 나누기의 정수 몫은 파이썬에서는 //연산자를 사용하여 얻을 수 있습니다. (아니면 나누기의 결괏값을 int()를 사용하여 정수형으로 바꾸어도 버림이 되어 정수 몫을 얻을 수 있습니다.)
def solution(s):
answer = ''
if len(s)%2==0:
else:
answer=s[len(s)//2]
return answer
#3
이번에는 짝수일 때를 확인하겠습니다.짝수는 가운데 두 글자를 갖고 와야 하는데, 한 글자가 아니니 슬라이싱을 사용하겠습니다.
이번에도 테스트하는 방법은 비슷합니다.
길이가 6일 때는 [2:4], 길이가 8일 때는 [3:5]인 것을 확인할 수 있습니다. 위의 테스트를 통해
슬라이싱의 앞 숫자는 "(길이//2)-1" 임을 알 수 있게 됩니다. 뒤의 숫자는 물론 2글자를 가져와야 하므로 "앞글자 위치+2"이고요(슬라이싱은 이상부터 미만까지 이므로). 그래서 최종적으로 다음과 같은 코드가 완성됩니다.
결과코드
방법 1
def solution(s):
answer = ''
if len(s)%2==0:
answer=s[(len(s)//2)-1:(len(s)//2)+1]
else:
answer=s[len(s)//2]
return answer
이상태로 제출하셔도 되지만, 조금 신경이 쓰이는 부분이 있네요. 바로 (len(s)//2)입니다.
똑같은 코드 3군데가 있는데, (특히 짝수 일 때) 파이썬이 돌면서 계속 길이도 다시 계산하고, 나누기도 만날 때마다 하겠죠.
그리고 혹시 생각을 잘못해서 코드를 고쳐야 한다면 3군데를 똑같이 고쳐야 하죠. 그래서 그런 것들을 감안해 변수에 값을 담겠습니다.
방법 2
def solution(s):
answer = ''
halfLen=len(s)//2
if len(s)%2==0:
answer=s[halfLen-1:halfLen+1]
else:
answer=s[halfLen]
return answer
"이게 맞고 저게 틀리다" 또는 "저게 맞고 이게 틀리다"를 이야기하는 것이 아니라, 다양한 방법으로 고민을 해보는 것이 좋다는 이야기를 하는 것입니다. 연습문제를 풀 때 다양하게 고민을 해봐야 실제에서는 고민을 덜 수 있으니 말입니다.
'파이썬 > 문제풀이' 카테고리의 다른 글
파이썬 - 프로그래머스 - x만큼 간격이 있는 n개의 숫자 (0) | 2020.05.20 |
---|---|
파이썬 - 프로그래머스 - 문자열내 p와 y의 개수 (0) | 2020.05.19 |
파이썬 - 프로그래머스 - 서울에서 김서방 찾기 (0) | 2020.01.02 |
파이썬 - 프로그래머스 - 수박수박수박수 (0) | 2019.12.30 |
파이썬 - 프로그래머스 - 문자열을 정수로 바꾸기 (0) | 2019.12.30 |