이번 문제도 풀이를 보지 않고 맞출 수 있었다!,,,햄벅,,,🌞🐣
코딩테스트 연습 - 가운데 글자 가져오기
단어 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도 알게 되었다. 몫과 나머지를 출력해주는 함수라니, 충분히 써먹을 수 있지 않을까?ㅎ_ㅎ
마지막으로 + 연산 말고 '슬라이싱'을 잘 활용해 봐야겠다!!
'코딩 테스트 > Python' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습] 9. 약수의 합 (0) | 2022.02.22 |
---|---|
[프로그래머스 코딩테스트 연습] 7. 핸드폰 번호 가리기 (0) | 2022.02.17 |
[프로그래머스 코딩테스트 연습] 5. 짝수와 홀수 (0) | 2022.02.16 |
[프로그래머스 코딩테스트 연습] 4. 완주하지 못한 선수 (0) | 2022.02.15 |
[프로그래머스 코딩테스트 연습] 3. 문자열 리턴 (수박수박수~) (0) | 2022.02.11 |