728x90
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
재한사항- s는 길이가 1 이상, 100이하인 스트링입니다.
"abcde" | "c" |
"qwer" | "we" |
1. 나의 코딩
def solution(s):
if len(s) % 2 == 1:
return s[len(s)//2]
else:
return s[(len(s)//2 -1) : len(s)//2 +1]
2. 한줄코딩
def solution(s):
return s[(len(s)-1)//2:len(s)//2+1]
① 전체 길이가 짝수인 경우 길이를 2n이라고 했을 때 2n//2 = n
② 전체 길이가 홀수인 경우 길이를 2n+1이라고 했을 때 (2n+1)//2 = n+ 0.5 = n
홀수인 경우 전체 길이에서 -1을 하게 되면 2로 나눈 몫이 n으로 -1을 했을 때와 안 했을 때 같은 몫을 가지고
짝수인 경우에는 몫이 n-0.5 = (n-1)+0.5로 (전체 길이-1)를 수행했을 때 다른 몫을 가지는 것을 확인할 수 있다. 즉, 각각의 몫은 다음과 같다
① 짝수 : n-1 , n
② 홀수 : n, n
그럼 이 부분에서 두 번째 몫에 +1만 해주고 인덱스로 활용한다면 짝수는 2개의 문자를 홀수는 1개의 문자를 얻을 수 있을 것이다. 결국 문제에서 원하는 문자의 개수를 만족시키게 되며 2로 나누는 과정을 통해 자연스럽게 가운데 문자를 뽑아내게 된다.
따라서 입력받은 문자 전체 길이 len(s)에 -1을 수행한 값과 len(s)의 값을 2로 나눈 몫을 활용하여 슬라이싱을 진행한 결과 짝수 홀수 조건을 나누지 않고 원하는 결과를 얻을 수 있었다.
728x90
'CodingTest > [프로그래머스 LV.1]' 카테고리의 다른 글
프로그래머스 LV.1 - 내적[Python] (0) | 2023.01.31 |
---|---|
프로그래머스 LV.1 - 수박수박수박수박수박수?[Python] (0) | 2023.01.31 |
프로그래머스 LV.1 - 없는 숫자 더하기[Python] (0) | 2023.01.31 |
프로그래머스 LV.1 - 음양 더하기[Python] (0) | 2023.01.31 |
프로그래머스 LV.1 - 제일 작은 수 제거하기[Python] (0) | 2023.01.31 |