코딩테스트

프로그래머스 기초 Day 18 파이썬

피갓자 2025. 4. 19. 13:00

프로그래머스
프로그래머스

x 사이의 개수

문제 설명

문자열 myString이 주어집니다.

myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 1 ≤ myString의 길이 ≤ 100,000
    • myString은 알파벳 소문자로 이루어진 문자열입니다.

입출력 예

myString result
"oxooxoxxox" [1, 2, 1, 0, 1, 0]
"xabcxdefxghi" [0, 3, 3, 3]

입출력 예 설명

입출력 예 #1

  • "x"를 기준으로 문자열을 나누면 ["o", "oo", "o", "", "o", ""]가 됩니다. 각각의 길이로 배열을 만들면 [1, 2, 1, 0, 1, 0]입니다. 따라서 [1, 2, 1, 0, 1, 0]을 return 합니다.

입출력 예 #2

  • "x"를 기준으로 문자열을 나누면 ["", "abc", "def", "ghi"]가 됩니다. 각각의 길이로 배열을 만들면 [0, 3, 3, 3]입니다. 따라서 [0, 3, 3, 3]을 return 합니다.

solution.py

def solution(myString):
    answer = []
    temp = myString.split('x')
    for i in temp:
        answer.append(len(i))
    return answer

문자열 잘라서 정렬하기

문제 설명

문자열 myString이 주어집니다.

"x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.

단, 빈 문자열은 반환할 배열에 넣지 않습니다.

제한사항

  • 1 ≤ myString ≤ 100,000
    • myString은 알파벳 소문자로 이루어진 문자열입니다.

입출력 예

myString result
"axbxcxdx" ["a", "b", "c", "d"]
"dxccxbbbxaaaa" ["aaaa", "bbb", "cc", "d"]

입출력 예 설명

입출력 예 #1

  • myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 따라서 해당 배열을 return 합니다.

입출력 예 #2

  • myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.

solution.py

def solution(myString):
    answer = []
    temp = myString.split('x')
    for i in temp:
        if i != '':
            answer.append(i)
    answer.sort()
    return answer

간단한 식 계산하기

문제 설명

문자열 binomial이 매개변수로 주어집니다.

binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다.

주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 0 ≤ ab ≤ 40,000
  • 0을 제외하고 ab는 0으로 시작하지 않습니다.

입출력 예

binomial result
"43 + 12" 55
"0 - 7777" -7777
"40000 * 40000" 1600000000

입출력 예 설명

입출력 예 #1

  • 예제 1번의 binomial은 "43 + 12"로 이 식을 계산한 결과인 43 + 12 = 55를 return 합니다.

입출력 예 #2

  • 예제 2번의 binomial은 "0 - 7777"로 이 식을 계산한 결과인 0 - 7777 = -7777을 return 합니다.

입출력 예 #3

  • 예제 3번의 binomial은 "40000 * 40000"으로 이 식을 계산한 결과인 40000 × 40000 = 1600000000을 return 합니다.

solution.py

def solution(binomial):
    a, op, b = binomial.split()
    a, b = int(a), int(b)
    
    if op == '+':
        return a + b
    elif op == '-':
        return a - b
    else:
        return a * b

문자열 바꿔서 찾기

문제 설명

문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다.

myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.

제한사항

  • 1 ≤ myString의 길이 ≤ 100
  • 1 ≤ pat의 길이 ≤ 10
    • myString과 pat는 문자 "A"와 "B"로만 이루어진 문자열입니다.

입출력 예

myString pat result
"ABBAA" "AABB" 1
"ABAB" "ABAB" 0

입출력 예 설명

입출력 예 #1

  • "ABBAA"에서 "A"와 "B"를 서로 바꾸면 "BAABB"입니다. 여기에는 부분문자열 "AABB"가 있기 때문에 1을 return 합니다.

입출력 예 #2

  • "ABAB"에서 "A"와 "B"를 서로 바꾸면 "BABA"입니다. 여기에는 부분문자열 "BABA"가 없기 때문에 0을 return 합니다.

solution.py

def solution(myString, pat):
    answer = ''
    
    for i in myString:
        if i == 'A':
            answer += 'B'
        else:
            answer += 'A'
            
    if pat in answer:
        return 1
    else:
        return 0

rny_string

문제 설명

'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다.

문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 1 ≤ rny_string의 길이 ≤ 100
  • rny_string은 영소문자로만 이루어져 있습니다.

입출력 예

rny_string result
"masterpiece" "rnasterpiece"
"programmers" "prograrnrners"
"jerry" "jerry"
"burn" "burn"

입출력 예 설명

입출력 예 #1

  • 예제 1번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.
rny_string m a s t e r p i e c e
result rn a s t e r p i e c e
따라서 "rnasterpiece"를 return 합니다.

 

입출력 예 #2

  • 예제 2번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.
rny_string p r o g r a m m e r s
result p r o g r a rn rn e r s
따라서 "prograrnrners"를 return 합니다.

 

입출력 예 #3

  • 예제 3번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "jerry"를 return 합니다.

입출력 예 #4

  • 예제 4번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "burn"를 return 합니다.

solution.py

def solution(rny_string):
    answer = ''
    
    for i in rny_string:
        if i == 'm':
            answer += 'rn'
        else:
            answer += i
    
    return answer
def solution(rny_string):
    answer = rny_string.replace('m', 'rn')
    return answer