어떠한 문자열이 주어졌을 때,
주어진 문자열의 가운데만 뽑아서 출력하는 문제였다.
1. 문자열의 길이가 홀수인 경우
ex) spoon
-> o
2.문자열의 길이가 짝수인 경우
ex) iPhone
-> ho
일단 문제를 처음 보았을 때,
문자열의 길이를 홀수/짝수로 나누어서 주고 있기 때문에
각각의 경우에 따라 분기하는 것이 필요하다고 생각했다.
def string_middle(str):
length = len(str) #인자로 받은 문자열의 길이
isOdd = length % 2 #나머지가 1이면 홀수인지?에 대한 값은 True, 0이면 짝수로써 False 값
여기까지 진행하여, 현재 주어진 문자열이 홀수 길이인지 짝수 길이인지를 구별해주었다.
남은 것은, 각 경우에 가운데 글자를 어떻게 정의할 것인가였다.
def string_middle(str):
length = len(str) #인자로 받은 문자열의 길이
isOdd = length % 2 #나머지가 1이면 홀수인지?에 대한 값은 True, 0이면 짝수로써 False 값
answer = ''
if isOdd:
answer = s[math.floor(length/2)]
else:
start = int(length/2 - 1)
end = int(length/2 + 1)
answer = s[start:end]
#짝수는 반으로 나누었을 때, 대칭형태로 양분되어서 가운데라는 개념을 잡기 위해서 문자열 길이의 반을 기준으로 플러스마이너스 1씩 범위를 부여해준다.
return answer
아래의 코드는 원리는 동일하지만 str의 길이가 홀수인지 짝수인지 판별할 필요도 없이 한 줄로 글자를 양분하는 코드이다.
def string_middle(str):
return str[(len(str)-1)//2:len(str)//2+1]
# 내가 쓴 코드는, index를 구할 때 나머지는 버리기 위하여 math.floor 함수를 썼는데,
# // 연산자를 사용한다면 굳이 import math 과정이 필요없다.
# 만약, 글자길이가 5인 문자열이었다면,
# str[x:y]라고 하였을 때,
# x가 2
# y가 3으로써, 눈으로 보기에도 가운데의 범위만 뽑아낸다.
# 만약, 글자 길이가 4인 문자열이었다면,
# str[1,3]으로 범위를 한정지어 추출하게 된다.
rotated Array Search with O(log n) - javascript (0) | 2019.10.07 |
---|---|
로마 숫자 변환 - Javascript (0) | 2019.07.13 |
shuffleDeck (카드섞기) - Javascript (0) | 2019.07.10 |
asyncMap method for array of multiple functions - Javascript (0) | 2019.06.28 |
balanced parentheses - Javascript (1) | 2019.06.27 |
댓글 영역