반응형
1. 주사위의 개수
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 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 |
입출력 예 설명
입출력 예 #1
- 상자의 크기가 가로 1, 세로 1, 높이 1이므로 모서리의 길이가 1인 주사위는 1개 들어갈 수 있습니다.
입출력 예 #2
- 상자의 크기가 가로 10, 세로 8, 높이 6이므로 모서리의 길이가 3인 주사위는 12개 들어갈 수 있습니다.
제출 답안
import Foundation
func solution(_ box: [Int], _ n: Int) -> Int {
// box 배열의 각 요소를 n으로 나눈 몫을 계산
let s1 = box.map { $0 / n }
// map으로 얻은 배열의 요소를 모두 곱한다
return s1.reduce(1, *)
}
2. 합성수 찾기
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
nresult
result | n |
10 | 5 |
15 | 8 |
입출력 예 설명
입출력 예 #1
- 10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.
입출력 예 #1
- 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15 로 8개입니다. 따라서 8을 return합니다.
제출 답안
import Foundation
func solution(_ n: Int) -> Int {
var count = 0
// 1부터 n까지 반복
for i in 1...n {
var result = 0
// 약수 찾기
for j in 1...i {
// 약수면 + 1
if i % j == 0 {
result += 1
}
}
// 약수가 3개 이상이면 합성수이고 count + 1
if result >= 3 {
count += 1
}
}
return count
}
3. 최댓값 만들기(1)
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers의 길이 ≤ 100
입출력 예
numbersresult
numbers | result |
[1, 2, 3, 4, 5] | 20 |
[0 ,31, 24, 10, 1, 9] | 744 |
입출력 예 설명
입출력 예 #1
- 두 수의 곱중 최댓값은 4 * 5 = 20 입니다.
입출력 예 #1
- 두 수의 곱중 최댓값은 31 * 24 = 744 입니다.
제출 답안
import Foundation
func solution(_ numbers: [Int]) -> Int {
let sortedNumbers = numbers.sorted()
// 가장 큰 두 수의 곱
let maxProduct = sortedNumbers[sortedNumbers.count - 1] * sortedNumbers[sortedNumbers.count - 2]
// 가장 작은 두 수의 곱
let minProduct = sortedNumbers[0] * sortedNumbers[1]
// 둘 중 더 큰 값을 반환
return max(maxProduct, minProduct)
}
4. 팩토리얼
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 0 < n ≤ 3,628,800
입출력 예
n | result |
3628800 | 10 |
7 | 3 |
입출력 예 설명
입출력 예 #1
- 10! = 3,628,800입니다. n이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
입출력 예 #2
- 3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.
제출 답안
import Foundation
func solution(_ n: Int) -> Int {
// 팩토리얼 값을 저장할 변수
var factorial = 1
// 계산 중인 값
var i = 1
// n이하동안 반복
while factorial <= n {
i += 1
factorial *= i // 새로 계산
}
return i - 1
}
반응형
'프로그래머스 입문문제' 카테고리의 다른 글
[프로그래머스 입문문제] Day 13 문자열, 배열, 사칙연산, 수학, 조건문 (0) | 2025.01.31 |
---|---|
[프로그래머스 입문문제] Day 12 문자열, 정렬, 사칙연산, 수학 (0) | 2025.01.24 |
[프로그래머스 입문문제] Day 10 조건문, 배열, 수학, 시뮬레이션 (0) | 2025.01.22 |
[프로그래머스 입문문제] Day 9 수학, 문자열, 해시, 완전탐색, 조건문 (0) | 2025.01.21 |
[프로그래머스 입문문제] Day 8 배열, 구현, 수학 (0) | 2025.01.21 |