프로그래머스 문제기록

[프로그래머스 코딩테스트 입문] - [주사위의 개수, 합성수 찾기]

코딩펭귄 2023. 9. 20. 20:39

주사위의 개수
문제 설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
box의 길이는 3입니다.
box[0] = 상자의 가로 길이
box[1] = 상자의 세로 길이
box[2] = 상자의 높이 길이
1 ≤ box의 원소 ≤ 100
1 ≤ n ≤ 50
n ≤ box의 원소
주사위는 상자와 평행하게 넣습니다.
입출력 예
box          n      result
[1, 1, 1]    1          1   

-> 상자의 크기가 가로 1, 세로 1, 높이 1이므로 모서리의 길이가 1인 주사위는 1개 들어갈 수 있습니다.

코드

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

 

합성수 찾기
문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n ≤ 100
입출력 예
  n      result
 10         5      -> 10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.
코드

def solution(n):
    answer = 0
    for i in range(n+1):
        cnt = 0
        for j in range(1,i+1):
            if i%j==0:     # j가 i의 약수일때
                cnt += 1
        if cnt >= 3:      # 약수의 개수가 3개 이상일때
            answer += 1
    return answer