[프로그래머스 Python] 코딩 기초 트레이닝 Day 18 - 문자열
1. x 사이의 개수
문자열 myString이 주어집니다. myString을 문자 “x”를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ myString의 길이 ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
코드 작성
def solution(myString):
return [len(s) for s in myString.split('x')]
2. 문자열 잘라서 정렬하기
문자열 myString이 주어집니다. “x”를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.
제한사항
- 1 ≤ myString ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
코드 작성
def solution(myString):
l = filter(None, myString.split('x'))
return sorted(l)
3. 간단한 식 계산하기
문자열 binomial이 매개변수로 주어집니다. binomial은 “a op b” 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 ‘+’, ‘-‘, ‘*’ 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.
제한사항
- 0 ≤ a, b ≤ 40,000
- 0을 제외하고 a, b는 0으로 시작하지 않습니다.
코드 작성
def solution(binomial):
cal = binomial.split()
if cal[1] == '+':
return int(cal[0]) + int(cal[-1])
elif cal[1] == '-':
return int(cal[0]) - int(cal[-1])
return int(cal[0]) * int(cal[-1])
코드 작성(간단한 ver)
def solution(binomial):
return eval(binomial)
eval 함수를 사용하면 매개변수로 받은 식(expression)을 문자열로 받아서 실행할 수 있다. 예로 ‘2 + 1’이라는 문자열이 들어와도 하나의 식으로 판단하여 계산해 준다. eval(‘4 + 2 + 1 + 5 * 4’)은 27을 반환하는 것을 보면, 사칙연산을 할 때 계산 순서를 잘 고려한다는 것을 알 수 있다.
4. 문자열 바꿔서 찾기
문자 “A”와 “B”로 이루어진 문자열 myString과 pat가 주어집니다. myString의 “A”를 “B”로, “B”를 “A”로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.
제한사항
- 1 ≤ myString의 길이 ≤ 100
- 1 ≤ pat의 길이 ≤ 10
- myString과 pat는 문자 “A”와 “B”로만 이루어진 문자열입니다.
코드 작성
def solution(myString, pat):
newString = ''
for s in myString:
if s == 'A':
newString += 'B'
else:
newString += 'A'
return 1 if pat in newString else 0
코드 작성(간단한 ver)
def solution(myString, pat):
pat = ''.join(['A' if p == 'B' else 'B' for p in pat])
return 1 if pat in myString else 0
pat의 ‘A’, ‘B’을 서로 바꾸고 그 순서가 바뀐 문자열이 myString에 있으면 1, 없으면 0을 출력하도록 작성하였다.
5. rny_string
‘m’과 “rn”이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 ‘m’을 “rn”으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ rny_string의 길이 ≤ 100
- rny_string은 영소문자로만 이루어져 있습니다.
코드 작성
def solution(rny_string):
answer = ''
for s in rny_string:
if s == 'm': answer += 'rn'
else: answer += s
return answer
코드 작성(간단한 ver)
def solution(rny_string):
return ''.join(['rn' if s == 'm' else s for s in rny_string])
📍 문제 출처
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기