| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 토마토
- 정렬
- 조합
- 프로그래멋
- 백준
- Python
- 15686
- 1932
- Lv2
- 깃허브 프로필
- 구현
- Java
- 자바
- 프로그래머스
- DP
- 알고리즘고득점Kit
- 깃허브
- 분할정복
- 그래프탐색
- 알고리즘
- BFS
- dfs
- 정수 삼각형
- 다익스트라
- 이코테
- 그래프
- 월간 코드 챌린지 시즌1
- 완전탐색
- Summer/Winter Coding(~2018)
- GIT
Archives
- Today
- Total
갱스터하우스
[Python] Lv1.가운데 글자 가져오기 본문
https://programmers.co.kr/learn/courses/30/lessons/12903
코딩테스트 연습 - 가운데 글자 가져오기
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret
programmers.co.kr
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한 사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
나의 접근방법 및 풀이
슬라이싱을 이용해서 풀어야겠다고 생각했다.
문자열의 길이가 짝수일 경우
| a | b | c | d |
| 0 | 1 | 2 | 3 |
가운데 두 글자를 반환하며, 가운데 두 글자 중 첫번째 글자의 인덱스는 (len(s)//2)-1이며 이때 -1을 하는 이유는 인덱스가 0부터 시작하기 때문이다. 그리고 두 번째 글자의 인덱스는 슬라이싱에서 포함 하기 위해 +1을 하여 (len(s)//2)+1이다.
문자열의 길이가 홀수 일 경우
| a | b | c | d | e |
| 0 | 1 | 2 | 3 | 4 |
홀수일 경우에는 해당 문자열 길이의 몫만 가져오면 된다. len(s)//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
다른 풀이
def string_middle(str):
return str[(len(str)-1)//2:len(str)//2+1]
start는 len(str)-1은 인덱스는 0부터 시작하니까 먼저 -1을 한다.
ex) "abcd"의 길이는 4지만 인덱스는 0~3까지니까
그리고 /2가 아니라 //2인 것은 소수점이 나올 수 있으니까 정수만 가져오기 위해서 사용한다.
end는 본래 str의 길이를 2로 나눈 정수값에 +1을 한다.
| a | b | c | d |
| 0 | 1 | 2 | 3 |
| len(str) = 4 [start : end] len(str)-1 = 3 (len(str)-1)//2 =3//2 = 1 [start : end] len(str)//2+1 = 4//2+1=2+1=3 [1:3] → bc |
|||
| a | b | c | d | e |
| 0 | 1 | 2 | 3 | 4 |
len(str) = 5 [start : end] len(str)-1 = 4 (len(str)-1)//2 =4//2 = 2 [start : end] len(str)//2+1 = 5//2+1=2+1=3 [2:3] → c |
||||
'코테 문제 > 프로그래머스' 카테고리의 다른 글
| [Python] Lv1.음양 더하기 (0) | 2022.04.09 |
|---|---|
| [Python] Lv1.크레인 인형뽑기 게임 (0) | 2022.04.08 |
| [Python] Lv1.나누어 떨어지는 숫자 배열 (0) | 2022.04.08 |
| [Python] Lv1.문자열 내 p와 y의 개수 (0) | 2022.04.08 |
| [Python] Lv1.x만큼 간격이 있는 n개의 숫자 (0) | 2022.04.08 |