프로그래머스의 Level 01 연습문제의 가운데 글자 가져오기 문제입니다.
문제
단어 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]
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers][Python][Level 1] 예산 (0) | 2021.04.18 |
---|---|
[Programmers][Python][Level 1] 소수 만들기 (0) | 2021.04.17 |
[Programmers][Python][Level 1] 3진법 뒤집기 (0) | 2021.04.16 |
[Programmers][Python][Level 1] 같은 숫자는 싫어 (0) | 2021.04.16 |
[Programmers][Python][Level 1] K번째수 (0) | 2021.04.15 |
[Programmers][Python][Level 1] 2016년 (0) | 2021.04.15 |
[Programmers][Python][Level 1] 모의고사 (0) | 2021.04.15 |
[Programmers][Python][Level 1] 신규 아이디 추천 (0) | 2021.04.14 |