[코딩테스트 입문]Day11
주사위의 개수
문제 설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 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 |
[10, 8, 6] | 3 | 12 |
문제 풀이
처음에는 박스의 부피를 정육면체 부피로 나눈 몫을 취하려고 했으나, 길이가 정해져있어서 빈틈을 매울 수 없으니 저렇게 구하면 안됩니다.
def solution(box, n):
num = 1
for i in box:
num *= i//n
return num
그래서 가로, 세로, 높이를 n으로 나눠 들어갈 수 있는 수를 정하고 이를 곱해주었습니다.
합성수 찾기
문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n
이 매개변수로 주어질 때 n
이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n
≤ 100
입출력 예
n | result |
---|---|
10 | 5 |
15 | 8 |
문제 풀이
def solution(n):
num, count = 1, 0
while num <= n:
A = []
for i in range(1, 1+n):
if num % i == 0:
A.append(i)
num += 1
if len(A) >= 3:
count += 1
return count
def solution(n):
output = 0
for i in range(4, n + 1):
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
output += 1
break
return output
최댓값 만들기(1)
문제 설명
정수 배열 numbers
가 매개변수로 주어집니다. numbers
의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤
numbers
의 원소 ≤ 10,000 - 2 ≤
numbers
의 길이 ≤ 100
입출력 예
numbers | result |
---|---|
[1, 2, 3, 4, 5] | 20 |
[0, 31, 24, 10, 1, 9] | 744 |
문제 풀이
def solution(numbers):
num = 0
for i, v in enumerate(numbers):
for j, k in enumerate(numbers):
if num <= v * k and i != j :
num = v * k
return num
def solution(numbers):
numbers.sort()
return numbers[-2] * numbers[-1]
팩토리얼
문제 설명
i
팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
- 0 <
n
≤ 3,628,800
입출력 예
n | result |
---|---|
3628800 | 10 |
7 | 3 |
문제 풀이
def solution(n):
i = 0
num = 1
num2 = 0
while i < n:
num2 = num
i += 1
num *= i
if num == n:
return i
elif num > n:
if num-n > num2-n:
return i-1
elif num-n < n - num2:
return i
from math import factorial
def solution(n):
k = 10
while n < factorial(k):
k -= 1
return k
댓글남기기