diff --git a/code_study/programmers/과일 장수/problem.txt b/code_study/programmers/과일 장수/problem.txt new file mode 100644 index 0000000..d994642 --- /dev/null +++ b/code_study/programmers/과일 장수/problem.txt @@ -0,0 +1,25 @@ +과일 장수가 사과 상자를 포장하고 있습니다. +사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. +사과 한 상자의 가격은 다음과 같이 결정됩니다. + +한 상자에 사과를 m개씩 담아 포장합니다. +상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. +과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다. +(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) +예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, +다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을 수 있습니다. +(최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수) = 2 x 4 x 1 = 8 +사과의 최대 점수 k, 한 상자에 들어가는 사과의 수 m, 사과들의 점수 score가 주어졌을 때, +과일 장수가 얻을 수 있는 최대 이익을 return하는 solution 함수를 완성해주세요. + +제한사항 +3 ≤ k ≤ 9 +3 ≤ m ≤ 10 +7 ≤ score의 길이 ≤ 1,000,000 +1 ≤ score[i] ≤ k +이익이 발생하지 않는 경우에는 0을 return 해주세요. + +입출력 예 +k m score result +3 4 [1, 2, 3, 1, 2, 3, 1] 8 +4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33 \ No newline at end of file diff --git a/code_study/programmers/과일 장수/solution.swift b/code_study/programmers/과일 장수/solution.swift new file mode 100644 index 0000000..c02fe01 --- /dev/null +++ b/code_study/programmers/과일 장수/solution.swift @@ -0,0 +1,9 @@ +import Foundation + +func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int { + let sort: [Int] = score.sorted(by: >) + return stride(from: m - 1, to: sort.count, by: m).reduce(0){ $0 + sort[$1] * m } +} + +print(solution(3, 4, [1, 2, 3, 1, 2, 3, 1])) // 8 +print(solution(4, 3, [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2])) // 33 diff --git a/code_study/programmers/소수 만들기/problem.txt b/code_study/programmers/소수 만들기/problem.txt new file mode 100644 index 0000000..51cd106 --- /dev/null +++ b/code_study/programmers/소수 만들기/problem.txt @@ -0,0 +1,12 @@ +주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. +숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, +nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. + +제한사항 +nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. +nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. + +입출력 예 +nums result +[1,2,3,4] 1 +[1,2,7,6,4] 4 \ No newline at end of file diff --git a/code_study/programmers/소수 만들기/solution.swift b/code_study/programmers/소수 만들기/solution.swift new file mode 100644 index 0000000..880962f --- /dev/null +++ b/code_study/programmers/소수 만들기/solution.swift @@ -0,0 +1,38 @@ +import Foundation + +func solution(_ nums:[Int]) -> Int { + guard let MAX = nums.max() else { return -1 } + + let maxLimit: Int = 3 * MAX - 3 + + var isPrime: [Bool] = Array(repeating: true, count: maxLimit + 1) + isPrime[0] = false + isPrime[1] = false + + for n in 2...Int(sqrt(Double(maxLimit))) { + if isPrime[n] { + for i in stride(from: n * 2, through: maxLimit, by: n) { + isPrime[i] = false + } + } + } + + var ans: Int = 0 + let count: Int = nums.count + + for i in 0 ..< count - 2 { + for j in i+1 ..< count - 1 { + for k in j+1 ..< count { + let sum: Int = nums[i] + nums[j] + nums[k] + if isPrime[sum] { + ans += 1 + } + } + } + } + + return ans +} + +let nums: [Int] = [1,2,7,6,4] +print(solution(nums)) diff --git a/code_study/programmers/python/숫자 짝궁/problem.txt b/code_study/programmers/숫자 짝궁/problem.txt similarity index 100% rename from code_study/programmers/python/숫자 짝궁/problem.txt rename to code_study/programmers/숫자 짝궁/problem.txt diff --git a/code_study/programmers/python/숫자 짝궁/solution.py b/code_study/programmers/숫자 짝궁/solution.py similarity index 100% rename from code_study/programmers/python/숫자 짝궁/solution.py rename to code_study/programmers/숫자 짝궁/solution.py diff --git a/code_study/programmers/python/올바른 괄호/problem.txt b/code_study/programmers/올바른 괄호/problem.txt similarity index 100% rename from code_study/programmers/python/올바른 괄호/problem.txt rename to code_study/programmers/올바른 괄호/problem.txt diff --git a/code_study/programmers/python/올바른 괄호/solution.py b/code_study/programmers/올바른 괄호/solution.py similarity index 100% rename from code_study/programmers/python/올바른 괄호/solution.py rename to code_study/programmers/올바른 괄호/solution.py