코딩 테스트/Python

[프로그래머스 코딩테스트 연습] 6. 가운데 글자 가져오기

알밤바 2022. 2. 17. 09:20
728x90
반응형

이번 문제도 풀이를 보지 않고 맞출 수 있었다!,,,햄벅,,,🌞🐣

 

 

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

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

programmers.co.kr


1) 문제 설명

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

 

2) 제한 사항

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

 

3) 입출력 예


1. 문제 접근방식

앞의 문제와 같이 동일하게 짝수일 때, 홀수일 때를 구분지어 생각을 하였다.

문자열의 길이와 인덱싱을 활용하여 코드를 짰다.

정말 단순하게 생각하여 코드를 짰는데, 단순히 +연산이 아닌 '슬라이싱'으로 코드를 작성했으면 더 좋았을 것이다.

 

2. 풀이코드

(1) 내가 작성한 코드

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

 

(2) 다른 사람 코드 (슬라이싱 사용)

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

 

🔥 슬라이싱을 사용할 때 주의할 점

→ 0번부터 시작하며 [a, b]일 때, b는 포함이 되지 않는다는 것!

 

(3) 다른 사람 코드 (파이썬 내장함수 divmod 사용)

def solution(s):
    answer = ''
    q,r = divmod(len(s),2) #- (a // b, a % b)
    if r:
        answer = s[q]
    else:
        answer = s[q-1]+s[q]
        
    return answer

 

문자열의 길이와 인덱싱을 활용하였다. 또한 divmod 파이썬 내장함수를 활용해 입력값을 2로 나눈 몫과 나머지를 각각 q, r에 할당하였다. 2로 나누었으니 r 값으로는 0과 1이 나올 것이다. 0과 1을 boolean으로 변경하면 0 - False, 1 - True가 된다.

그렇기에 r = 0(짝수)이라면 False가 되기 때문에 if 절은 넘어가고 else절에 있는 조건문을 실행하게 된다.

r = 1(홀수)이라면, True가 되기 때문에 if절에 있는 조건문을 실행하고 else절은 넘어가게 된다.

 

3. 배운 점

0과 1을 boolean값으로 변경이 된다는 점, 그리고 그것을 코드에서 활용할 수 있다는 것을 알게 되었다. 생각보다 이해하는데 복잡해서 퍼실님께 물어보고 나서야 이해가 완벽히 되었다. 문제 5번도 동일하게 boolean값으로 변경하여 짠 코드가 있는데, 같이 이해가 되었다.

아! 그리고 파이썬 내장함수인 divmod도 알게 되었다. 몫과 나머지를 출력해주는 함수라니, 충분히 써먹을 수 있지 않을까?ㅎ_ㅎ

마지막으로 + 연산 말고 '슬라이싱'을 잘 활용해 봐야겠다!!

728x90
반응형