programming

프로그래머스 가운데 글자 가져오기 파이썬 풀이 해설


by Kitle · 2020. 07. 18.



퀴즈 출처 프로그래머스 : https://programmers.co.kr/learn/courses/30/lessons/12903


문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.


제한사항

s는 길이가 1 이상, 100이하인 스트링입니다.

입출력 예

s return

abcde c

qwer we


이번엔 좀 쉬운 퀴즈네요.
문제속에 답이있죠? 길이를 반으로 나누어 홀수면 홀수 index  위치를 출력하고 짝수면 짝수 인덱스와 그 다음 인덱스 까지 출력하면 되겠습니다.

[풀이]
def solution(s):
if len(s) % 2 == 1:
return s[((len(s)) // 2)]
else:
return s[len(s)//2-1:len(s)//2+1]
우선 주어진 문자열이 s라고 했을 때, 문자열 길이를 알 수 있는 len() 함수를 사용하도록 합니다. 그리고 2로 나눈 나머지가 0이냐 1이냐에 따라 문자열 길이가 홀 수 인지 짝수인지 알 수 있습니다.

길이를 2로 나눈 나머지가 1이라면 길이가 홀 수 임을 알 수 있죠? 이럴땐 한 글자만 출력(리턴 하면 됩니다)

파이썬3에서는 / 나누기를 하면 소수부까지 출력이 됩니다. 정수부(나머지 버림)만 출력하고 싶다면 // 나누기 기호를 두번 쓰면 되요. 길이가 5라면 2로 나누면 2.5가 나옵니다. 정수부만 빼면 2가 되겠죠?

문자열이 abcde 의 경우 c를 출력해야 합니다. index는 0부터 시작하므로 s[2] 위치를 출력해주면 됩니다. 고로 2로 나눈 몫과 같습니다. len(s) // 2 로 처리해주면 되겠습니다.

이제 문자열이 짝수인 경우는 좀 다릅니다.

길이가 4인 경우를 보겠습니다.

2로나눈 값은 2입니다.

abcd 인 경우는 bc로 index기준 0,1,2,3 중 1과 2의 위치 값을 출력해야 합니다. 따라서 2로 나눈 값에서 1을 빼주고, 마지막은 +1을 해줍니다. 슬라이스를 사용했기 때문에 +1을 해주어야 합니다.  s[1:2]가 아닌 s[1:3] 이 되어야 올바르게 슬라이싱이 되는 점을 유의하시면 됩니다.

크게 어려울 것 없겠죠?