Day9 문자열
- 배열 만들기 5
- 부분 문자열 이어 붙여 문자열 만들기
- 문자열 뒤의 n글자
- 접미사 배열
- 접미사인지 확인하기
배열 만들기 5
문제 설명
문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.
def solution(intStrs, k, s, l):
answer = []
for i in intStrs:
intList = list(i)
res = ''.join(intList[s:s+l])
if int(res) > k:
answer.append(int(res))
return answer
이것저것 형변환을 많이 사용한 것 같다. 생각해보니 리스트로 변환할 것 없이 문자열 자체를 슬라이싱하면 되는데 왜 리스트로 변환해서 슬라이싱 할 생각을 했지 . .ㅎㅎ
def solution(intStrs, k, s, l):
return [int(intstr[s:s+l]) for intstr in intStrs if int(intstr[s:s+l]) > k]
다른 사람 풀이 :
문자열을 바로 슬라이싱해서 int로 변환하고, 조건문으로 값이 k 이상인 값들만 뽑아냈다. 굿굿..
부분 문자열 이어 붙여 문자열 만들기
문제 설명
길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_strings, parts):
answer = ''
for i in range(len(my_strings)):
answer += my_strings[i][parts[i][0]:parts[i][1]+1]
return answer
my_strings와 parts의 길이가 같고, 같은 인덱스 안의 값들을 사용하는 것이므로 인덱스를 활용하려고 생각하며 풀었다.
한번에 풀려고 하지 않고 하나하나 해석하면서 푸니까 좀 더 빨리 풀리는 듯!
def solution(my_strings, parts):
answer = ""
for i, (s, e) in enumerate(parts):
answer += my_strings[i][s:e+1]
return answer
다른 사람의 좀 더 간단한 풀이, enumerate 함수도 잘 사용하면 유용한 것 같다.
문자열의 뒤의 n글자
문제 설명
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string, n):
return my_string[-n:]
음수 인덱스 사용해서 문자열 뒤에서부터 슬라이싱 !
접미사 배열
문제 설명
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string):
return sorted([my_string[i:] for i in range(len(my_string))])
인덱스 0부터 +1씩 문자열 슬라이싱 > 사전순으로 정렬
접미사인지 확인하기
문제 설명
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string, is_suffix):
lst = [my_string[i:] for i in range(len(my_string))]
return 1 if is_suffix in lst else 0
방금 푼 물제에 조건문만 붙여서 접미사 배열 안에 해당 접미사가 있는지만 확인하여 1, 0 리턴
def solution(my_string, is_suffix):
return int(my_string.endswith(is_suffix))
다른 사람 풀이:
endswith 함수는 문자열이 특정 접미사로 끝나는지 여부를 확인하는 파이썬의 문자열 메서드
특정 접미사로 끝나면 True를 반환하고, 그렇지 않으면 False를 반환
endswith 함수를 사용해서 바로 답을 낼 수도 있었다 .. ㄷㄷ!
내가 모르는 함수 왜이리 많은지
def solution(my_string, is_suffix):
return int(my_string[-len(is_suffix):] == is_suffix)
또 신박하다고 생각했던 풀이는
접미사 배열 안에 is_suffix의 길이와 같은 값을 구하고 이를 is_suffix와 비교하는 것
어제는 한문제를 한시간 넘게 풀어서 거의 총 3시간을 소요했는데 오늘은 또 난이도가 낮아서 금방 풀었다.
할 건 많은데 알고리즘은 시간이 얼만큼 소요될지 모르니까 빨리 끝나는 날엔 시간을 번 것 같고,
늦게 끝나는 날엔 시간을 빼앗긴 느낌이다 ㅋㅋㅋㅋㅋ 나만 그런게 아니겠지 ..!
앞으로 난이도가 점점 더 올라갈텐데 ,, 꾸준히 하다보면 그래도 훨씬 실력이 좋아지지 않을까 ?
아무튼 오늘은 빨리 끝나서 기분이 좋다.. 얼른 다른 할 일 청산하러 가야지
'코테' 카테고리의 다른 글
프로그래머스 기초문제 Day11 리스트(배열) (1) | 2024.01.11 |
---|---|
프로그래머스 기초문제 Day10 문자열 (1) | 2024.01.10 |
프로그래머스 기초문제 Day8 조건문, 문자 (2) | 2024.01.08 |
프로그래머스 기초문제 Day7 반복문 (1) | 2024.01.07 |
프로그래머스 기초문제 Day6 조건문, 반복문 (1) | 2024.01.06 |