본문 바로가기

개발일지/TIL

TIL 23-03-21

1. 프로그래머스 알고리즘 문제 

 문제점

알고리즘 문제 풀이 중 n 이하의 짝수를 모두 더하는 문제에서 그 이하의 짝수를 더하는 방법 구하는 중 값이 나오지 않고 실행시간이 10초를 넘어감

def solution(n):
    answer = 0
    if n % 2 == 0:
        answer += n

    while True:
        n -= 1
        if n % 2 == 0:
            answer += n
    return answer


print(solution(10))

 시도해 본 것들

while True:로 구해보기

while True():로 구해보기

while True(n):로 구해보기 

while n  > 0:로 구해보기 <- 해결

 해결 방법

    while n > 0:
        n -= 1
        if n % 2 == 0:
            answer += n
    return answer

 알게 된 점

컴퓨터가 계속 돌아가서 왜 그런가 했는데 while True면 무한루프였다.

 

while문을 생각해 낸 것까진 좋았는데 while True가 기억에 남아있었다.

 문제점

분수는 만들었지만 기약분수로 나타낼 방법을 알지 못함.

def solution(numer1, denom1, numer2, denom2):
    numer = 0

	# 공배수로 곱하기
    denom = denom1 * denom2
    numer1 = numer1 * denom / denom1
    numer2 = numer2 * denom / denom2

    numer = numer1 + numer2
    answer = [numer, denom]

    return answer, denom / numer


print(solution(1, 2, 3, 4))

 

어찌어찌 나눴는데 나누면 안 되는 것까지 나눠버림

def solution(numer1, denom1, numer2, denom2):
    numer = 0

    # 분모 공배수로 곱하기
    denom = denom1 * denom2

    # 분자
    numer1 = numer1 * denom / denom1
    numer2 = numer2 * denom / denom2

    numer = numer1 + numer2

    for n in range(1, 1000):
        if (numer / n) and (denom / n) > int(n):
            numer = numer / int(n)
            denom = denom / int(n)

    answer = [numer, denom]
    return answer


print(solution(1, 2, 3, 4))

 시도해 본 것들

python 소수 찾는 방법 검색 <-실패

숫자 범위만큼의 range 설정하고 찾기 <- 분수를 소수점 단위로 나눠버림

int를 사용해서 소수점으로 나눠지는지 확인하기  <- 문제 정답률 80%

while문으로 여러 번 나오는 공약수 다시 돌기  <- 해결

 해결 방법

number = 0
    # 공약수 찾기
    # 여러번 나오는 공약수 제거를 위한 while문
    while number < 1000:
        for n in range(1, 1000):
            number += 1
            # 나눴을 때 소수점 확인
            if numer / n == int(numer / n) and denom / n == int(denom / n):
                numer = numer / n
                denom = denom / n
            continue

 알게 된 점

math같은 모듈이 없어도 만들 수 있는 문제들이구나.

헤맸지만 끝내 스스로 해결가능하니 너무 재밌다.

 조건문 반복문은 신인가?

이번에도 while문이 해결해 줬다.

'개발일지 > TIL' 카테고리의 다른 글

TIL 23-03-23  (3) 2023.03.23
TIL 23-03-22  (2) 2023.03.22
TIL 23-03-20  (0) 2023.03.20
TIL 23-03-19  (0) 2023.03.19
TIL 23-03-18  (0) 2023.03.18