Day17 문자열
- 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
- 문자열이 몇 번 등장하는지 세기
- ad 제거하기
- 공백으로 구분하기 1
- 공백으로 구분하기 2
특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
문제 설명
문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
def solution(myString, pat):
answer = ''
idx = 0
if pat in myString:
idx = myString.rindex(pat) + len(pat)-1
answer = myString[:idx+1]
return answer
myString에서 pat을 찾고 시작 인덱스가 아니라 끝 인덱스를 알아야 하니까 pat의 길이에서 -1 값으로 idx 를 찾았다
이후 처음부터 idx까지 슬라이싱
def solution(myString, pat):
answer = myString[:myString.rindex(pat) + len(pat)]
return answer
뭔가 비슷한듯 다른 다른 사람들 풀이가 많아서 내 코드를 수정해봤는데 5-6번째 줄 코드를 합치면
저렇게나 간략해진다. if문 굳이 쓸 필요가 없었다.
문자열이 몇 번 등장하는지 세기
문제 설명
문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.
def solution(myString, pat):
answer = 0
for i in range(len(myString)):
if myString[i:i+len(pat)] == pat:
answer +=1
return answer
myString을 순회하면서 pat의 길이만큼의 문자열을 pat이랑 비교한 후 일치하면 +1
find랑 rfind로 풀어보려고 했는데 앞, 뒤 제외한 중간에서 겹치는 문자열을 찾을 수가 없어서 포기 ..
def solution(myString, pat):
answer = 0
for i, x in enumerate(myString) :
if myString[i:].startswith(pat) :
answer += 1
return answer
startswith() 함수
문자열이 지정된 접두사(prefix)로 시작하는지 여부를 확인하기 위한 파이썬의 문자열 메서드
ad 제거하기
문제 설명
문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
def solution(strArr):
answer = []
for idx, value in enumerate(strArr):
if 'ad' not in value:
answer.append(strArr[idx])
return answer
not in 연산자를 사용해서 ad가 없으면 배열 answer에 추가, 있으면 pass
공백으로 구분하기 1
문제 설명
단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string):
return my_string.split(' ')
my_string 문자열을 공백으로 구분하여 리스트로 반환
split() 함수
문자열을 특정 구분자(delimiter)를 기준으로 나누어 리스트로 반환하는 파이썬의 문자열 메서드
공백으로 구분하기 2
문제 설명
단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string):
return my_string.split()
응?
split(' ')과 split()의 차이는
split(' ')을 사용하면 공백으로 나누다 연속된 공백이 있을 때 공백(빈 문자열)까지 리스트에 포함된다.
split()은 연속된 공백도 하나의 공백으로 간주하여 나눈다.
결론은 공백으로 구분하기1도 split() 사용해도 정답이었음
근데 공백으로 구분하기2에는 split(' ') 사용하면 안된다.
연속된 공백이 있으면 공백을 빈 문자열로 배열에 포함하여 리스트를 생성하기 때문
'코테' 카테고리의 다른 글
프로그래머스 기초문제 Day19 문자열, 리스트(배열) (0) | 2024.01.19 |
---|---|
프로그래머스 기초문제 Day18 문자열 (0) | 2024.01.18 |
프로그래머스 기초문제 Day16 문자열 (0) | 2024.01.16 |
프로그래머스 기초문제 Day15 리스트(배열), 문자열 (1) | 2024.01.15 |
프로그래머스 기초문제 Day14 리스트(배열) (1) | 2024.01.14 |