Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 256705d

Browse files
Merge pull request #64 from chaerin-dev/main
20220604 풀이 추가
2 parents 71a39e5 + 22be080 commit 256705d

File tree

3 files changed

+73
-2
lines changed

3 files changed

+73
-2
lines changed

‎level-1/소수-만들기.js‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,36 @@ const isPrime = (n) => {
5050
return true;
5151
}
5252
// 세개의 수를 더해야 하기때문에 수 for문 하나당 수 하나를 넣어서 순회하였다.
53+
54+
//정답 3 - chaerin-dev
55+
// arr배열에서 selectNumber개의 요소를 뽑는 모든 경우를 배열로 반환하는 함수
56+
const getCombinations = function (arr, selectNumber) {
57+
const results = [];
58+
if (selectNumber === 1) return arr.map((el) => [el]);
59+
arr.forEach((fixed, index, origin) => {
60+
const rest = origin.slice(index + 1);
61+
const combinations = getCombinations(rest, selectNumber - 1);
62+
const attached = combinations.map((el) => [fixed, ...el]);
63+
results.push(...attached);
64+
});
65+
return results;
66+
};
67+
68+
// num이 소수인지 여부를 반환하는 함수
69+
function isPrime(num) {
70+
if (num === 1) return false;
71+
for (let i = 2; i <= Math.sqrt(num); i++) {
72+
if (num % i === 0) return false;
73+
}
74+
return true;
75+
}
76+
77+
function solution(nums) {
78+
const combinationResult = getCombinations(nums, 3);
79+
let answer = 0;
80+
combinationResult.forEach((e) => {
81+
const sum = e[0] + e[1] + e[2];
82+
if (isPrime(sum)) answer++;
83+
});
84+
return answer;
85+
}

‎level-1/폰켓몬.js‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,16 @@ function solution(nums) {
4444

4545
return unique.length > nums.length / 2 ? nums.length / 2 : unique.length;
4646
}
47+
48+
//정답 5 - chaerin-dev
49+
function solution(nums) {
50+
// 가질 수 있는 폰켓몬의 수
51+
const getCnt = nums.length / 2;
52+
// 폰켓몬 종류의 수
53+
const setSize = new Set(nums).size;
54+
// 내가 가질 수 있는 폰켓몬의 수보다 폰켓몬 종류의 수가 더 많으면
55+
// -> 모두 다른 종류의 폰켓몬을 하나씩 가질 수 있음
56+
// 내가 가질 수 있는 폰켓몬의 수보다 폰켓몬 종류의 수가 더 적으면
57+
// -> 최대한 다양한 종류의 폰켓몬을 가지려고 해도 원래 있던 폰켓몬 종류의 수가 최대로 가질 수 있는 폰켓몬 종류의 수
58+
return setSize > getCnt ? getCnt : setSize;
59+
}

‎level-2/기능개발.js‎

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ function solution(progresses, speeds) {
6262
return answer;
6363
}
6464

65-
66-
6765
// 정답 4 - createhb21
6866
function solution(progresses, speeds) {
6967
// answer은 각 배포 때 함께 배포되는 기능의 수를 담은 배열
@@ -89,3 +87,30 @@ function solution(progresses, speeds) {
8987
answer.push(queue.length);
9088
return answer;
9189
}
90+
91+
// 정답 5 - chaerin-dev
92+
function solution(progresses, speeds) {
93+
// 각 기능 개발 작업이 끝나기까지 남은 일수를 계산해서 daysLeftArr 배열에 저장
94+
const daysLeftArr = progresses.map((progress, i) => Math.ceil((100 - progress) / speeds[i]));
95+
96+
// 최초 배포날은 daysLeftArr의 첫 번째 요소
97+
let deployDay = daysLeftArr[0];
98+
// 각 배포에 몇 개의 기능이 배포될지 셀 변수
99+
let cnt = 0;
100+
// 각 배포에 몇 개의 기능이 배포될지 저장할 배열
101+
const answer = [];
102+
103+
// leftDays 배열을 차례로 순회하며 현재 배포일보다 이후에 배포되어야할 기능을 만나면 이전까지의 기능을 한번에 배포
104+
daysLeftArr.forEach((daysLeft) => {
105+
if (deployDay < daysLeft) {
106+
deployDay = daysLeft;
107+
answer.push(cnt);
108+
cnt = 0;
109+
}
110+
cnt++;
111+
});
112+
answer.push(cnt);
113+
114+
// 정답 반환
115+
return answer;
116+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /