본문 바로가기
알고리즘 풀이

[알고리즘] 프로그래머스 | 분수의 덧셈, 문자열 내 p와 y의 개수

by 째깍단 2023. 9. 1.

분수의 덧셈

수학문제

답: 

더보기
import math

def solution(numer1, denom1, numer2, denom2):
    denom = denom1 * denom2
    numer = denom1 * numer2 + denom2 * numer1
    gcd = math.gcd(numer, denom)
    return [numer//gcd, denom//gcd]

 

 

문제 분석 및 해석

두 분수의 numer(분자), denom(분모)가 각각 주어지며, 해당 분수를 기약분수로 표현하기

 

**기약분수 : 더이상 나누어지지 않는 수로 이루어진 분수, 분자 분모가 모두 소수

 

>> 풀이생각

분모를 같게 만들어 저장,

분자는 서로의 분모를 곱하여 더하여 저장 

이후 두 수의 최대공약수 math.gcd를 구해서 몫을 retrun

 

 

리뷰.

gcd를 다시 구현할 생각을 하고 있다가 모듈이 있다는걸 떠올림...

자주 쓰고 익히자.

 

 

 

 


문자열 내 p와 y의 개수

 

답: 

더보기
def solution(s):
    answer = True
    check_p = 0
    check_y = 0
    
    s = s.lower()
    for iter_s in s:
        if iter_s == "p":
            check_p += 1
        elif iter_s == "y":
            check_y += 1
    return True if check_p == check_y else False

 

 

문제 분석 및 해석

대문자와 소문자가 섞여있는 문자열 s

 s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 

개수를 비교할 때 대문자와 소문자는 구별하지 않음

 

입출력

s answer
"pPoooyY" true
"Pyy" false

 

>> 풀이생각

다른 문자도 주어지므로 각각을 If elif로 확인해야함

If문에서 ‘p’ ‘P’로 둘다 확인해도 되지만

lower 사용하자

 

 

리뷰.

 lower upper함수는 sort처럼 본래 문자열을 수정하지 않는!

s = s.lower() 사용하자