본문 바로가기
코딩테스트/Programmers

[Programmers][Python][Level 1] 가운데 글자 가져오기

by codeok 2021. 4. 16.
반응형

프로그래머스의 Level 01 연습문제의 가운데 글자 가져오기 문제입니다.

 

 

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

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

programmers.co.kr

 

문제 

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요.

단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다

 

 

제한 조건

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

 

입출력 예

s return
   
"abcde" "c"
"qwer" "we

 

풀이

첫 번째 도전 - 성공

해당 문제를 풀기전에 파이썬 슬라이싱에 대해서 알아야 합니다.

슬라이싱이란 연속적인 객체들에(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법입니다.

 

예시로 s = "abcd"이라면 print(s[0:4])를 하면 "abcd"값이 나옵니다.

파이썬 슬라이싱은 [start:end]인 경우 end-1까지 리턴한다는 점을 기억하면 쉽게 풀 수 있었습니다.

 

두 가지 분기로 나눠서 생각을 했습니다. 문자열 길이를 짝수인지 홀수인지 체크를 합니다.

 

짝수일 경우에는 s = "abcd"라면 len(s)는 4이고 s[1:3]이라면 "bc"의 값을 가져올 수 있습니다.

그래서 몫을 이용해서 몫에서 1을 빼면 앞의 슬라이싱 값과 몫에서 1을 더한 값을 뒤의 슬라이싱 값을 줬습니다.

 

홀수일 경우에는 조금 더 간단합니다.

만약 s = "abc"라면 len(s)는 3이고, s[1]인 "b"를 가져오면 됩니다. 

즉 [ len(s) // 2 ]=> [3 // 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

 

 

코드 정리

문자열의 슬라이싱 하는 코드에서 반복적인 코드가 나옵니다.

quotient = 몫, remainder = 나머지 변수를 만들어서 반복적인 코드를 줄여 줍니다.

def solution(s):
    answer = ''
    
    quotient = len(s) // 2
    remainder = len(s) % 2
    
    if remainder == 0:
        answer = s[quotient - 1 : quotient + 1]
    else:
        answer = s[quotient]
    
    return answer

 

삼항 연산자 사용

파이썬의 삼항 연산자 사용법은 [참인경우 값 if 조건 else 거짓인경우 값] 다음과 같습니다.

 

위의 코드만으로도 성공적으로 되지만, 파이썬에서 삼항 연산자를 이용하면 코드의 길이를 줄일 수 있습니다.

def solution(s):
    
    quotient = len(s) // 2
    remainder = len(s) % 2
    
    return s[quotient - 1 : quotient + 1] if remainder == 0 else s[quotient]
반응형