본문 바로가기

Til

Til 24.03.26 프로그래머스 파이썬(replace 함수)

>>91 개미군단

 

장군개미는 5의 공격력을, 

병정개미는 3의 공격력을 일개미는 1의 공격력

예를 들어 체력 23의 여치를 사냥하려고 할 때,

일개미 23마리를 데리고 가도 되지만,

장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥

사냥감의 체력 hp가 매개변수로 주어질 때,

사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return

 

def solution(hp):
    answer = 0  # 최소 병력을 담을 변수 초기화
    if hp % 5 == 0:  # 만약 체력이 5로 나누어 떨어지면
        answer += hp // 5  # 필요한 병력은 hp를 5로 나눈 몫
    else:  
        if (hp % 5) % 3 == 0:  # 체력을 5로 나눈 나머지를 3으로 나누어 떨어지는지 확인
            answer += (hp // 5) + (hp % 5) // 3  # 필요한 병력은 hp를 5로 나눈 몫+ 나머지를 3으로 나눈 몫
        else:  
            answer += (hp // 5) + (hp % 5) // 3 + (hp % 5) % 3  # 필요한 병력은 hp를 5로 나눈 몫+ 나머지를 3으로 나눈 몫+ 나머지를 3으로 나눈 나머지
    return answer

 

마지막 줄까지 작성하고 보니 위의 내용들은 굳이 필요가 없을것같다는 생각이 듬

 

def solution (hp):
    return (hp//5)+(hp%5)//3+(hp%5)%3
#더하기라 어짜피 값이 없어도 상관없음으로 바로 리턴해줌

 

>>92 특정한 문자 대문자로 바꾸기

 

영소문자로 이루어진 문자열 my_string과 영소문자 1글자로 이루어진 문자열 alp

my_string에서 alp에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return

 

def solution(my_string,alp):
    answer = ''
    for i in my_string:
        if i == alp:
            answer+=i.upper()
        else :
            answer += i
    return answer

 

replace 함수로 줄일수 있을거 가틈

def solution(my_string, alp):
    return my_string.replace(alp,alp.upper()) #alp를 대문자로 대체함

 

 

>>93 문자열 바꿔서 찾기

문자 "A"와 "B"로 이루어진 문자열 myString과 pat

myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중

pat이 있으면 1을 아니면 0을 return

 

#오류 코드
def solution(mys,pat):
    a = mys.replace("A","B").replace("B","A")#일케하면 전부 에이로 바뀜.replace("b", "B").replace("a", "A")
    if pat in a:#오류 코드
        return 1
    else:
        return 0
 

 

저렇게 하면 값이 A -> B로 그리고 B에서A로 전부바뀌어 버림

 

def solution(myString, pat):

    a= myString.replace("A", "b").replace("B", "a").replace("b", "B").replace("a", "A")
    #소문자로 바꿨다 대문자로 바꿔야 정확하게 바뀜

    if pat in a:#바뀐 문자열안에 pat가 있는지 확인
        return 1
    else:
        return 0
   

소문자로 바꿨다가 다시 대문자로 바꿔줌으로 정확하게 원하는 방향으로 바꿈 

 

 

>>94 5명씩 

 

최대 5명씩 탑승가능한 놀이기구

줄을 서있는 사람들의 이름이 담긴 문자열 리스트 names가 주어질 때,

앞에서 부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return

마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함

 


def solution(names):
    answer = []  # 가장 앞에 있는 사람들의 이름을 담을 리스트
    for i in range(0, len(names), 5):
        answer.append(names[i])  # 5번째 마다의 이름을 answer 리스트에 추가합니다.
    return answer