[프로그래머스]코딩테스트 입문 | 복습 Day11

sun_U·2023년 6월 17일
0
post-thumbnail

Day11. 수학, 반복문

41. 주사위의 개수


문제
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

제출 코드

def solution(box, n):
    answer = (box[0]//n) * (box[1]//n) * (box[2]//n)
    return answer

42. 합성수 찾기


문제
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

제출 코드

def solution(n):
    answer = 0
    for i in range(1, n+1):
        cnt = 0
        for j in range(1,i+1):
            if i % j == 0:
                cnt += 1
        if cnt >= 3:
            answer += 1
    return answer

43. 최댓값 만들기(1)


문제
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

제출 코드

def solution(numbers):
    answer = sorted(numbers)[-1] * sorted(numbers)[-2]
    return answer

44. 팩토리얼


문제
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
i! ≤ n

제출 코드

def factorial(num):
    if num == 1:
        return 1
    else:
        return factorial(num-1) * num

def solution(n):
    answer = 1
    while True:
        if factorial(answer) > n:
            return answer - 1
        answer += 1

다른 풀이

def solution(n):
    base = 1
    m = 1
    while base <= n:
        m += 1
        base *= m
    return m-1
profile
Data Engineer🐣

0개의 댓글