Skip to content

Commit 25ba838

Browse files
Merge pull request codeisneverodd#35 from prove-ability/main
[정기적 문제 풀이 추가 PR] 2022.04.19
2 parents 6eae698 + 7db2c13 commit 25ba838

17 files changed

+195
-3
lines changed

level-1/3진법-뒤집기.js

+5
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ function solution(n) {
3131
var answer = n.toString(3).split('').reverse().join('')
3232

3333
return parseInt(answer, 3)
34+
}
35+
36+
//정답 4 - prove-ability
37+
function solution(n) {
38+
return parseInt(n.toString(3).split("").reverse().join(""), 3)
3439
}

level-1/같은-숫자는-싫어.js

+19
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,22 @@ function solution(arr) {
2323
// 첫 번째 요소의 경우 undefined와 비교
2424
return arr.filter((item, index) => item !== arr[index - 1]);
2525
}
26+
27+
// 정답 4 - prove-ability
28+
function solution(arr) {
29+
let answer = [];
30+
// 이중 배열을 사용해서 포인터?를 두 개를 사용한다
31+
for (let i = 0, len = arr.length - 1; i < len; i++) {
32+
// i 의 다음수를 비교하기 위해 j = (i + 1)
33+
for (let j = i + 1, len = arr.length; j < len; j++) {
34+
// i 와 j 번째 값이 같이 않다면
35+
if (arr[i] !== arr[j]) {
36+
answer.push(arr[i]);
37+
i = j - 1;
38+
break;
39+
}
40+
}
41+
}
42+
answer.push(arr[arr.length - 1]);
43+
return answer;
44+
}

level-1/나누어-떨어지는-숫자-배열.js

+7
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,11 @@ function solution(arr, divisor) {
2626
if (e % divisor === 0) answer.push(e);
2727
});
2828
return answer.length ? answer.sort((a, b) => a - b) : [-1];
29+
}
30+
31+
//정답 4 - prove-ailbity
32+
function solution(arr, divisor) {
33+
var answer = [];
34+
arr.forEach((v) => v % divisor === 0 && answer.push(v))
35+
return answer.length === 0 ? [-1] : answer.sort((a, b) => a - b);
2936
}

level-1/나머지가-1이-되는-수-찾기.js

+14
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,18 @@ function solution(n) {
77
n % divisor === 1 ? answer = divisor : null
88
}
99
return answer;
10+
}
11+
12+
//정답 2 - prove-ability
13+
function solution(n) {
14+
var answer = 0;
15+
let i = 0;
16+
while(true) {
17+
if(n % i === 1) {
18+
answer = i;
19+
break;
20+
}
21+
i++;
22+
}
23+
return answer;
1024
}

level-1/두-개-뽑아서-더하기.js

+13
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,17 @@ function solution(numbers) {
1212
answer = [...new Set(answer)]
1313
answer.sort((a, b) => a - b)
1414
return answer;
15+
}
16+
17+
//정답 2 - prove-ability
18+
function solution(numbers) {
19+
const answer = [];
20+
21+
for(let i = 0, len = numbers.length; i < len; i++) {
22+
for(let j = i + 1, len = numbers.length; j < len; j++) {
23+
if(!answer.includes(numbers[i] + numbers[j])) answer.push(numbers[i] + numbers[j])
24+
}
25+
}
26+
27+
return answer.sort((a, b) => a - b);
1528
}

level-1/두-정수-사이의-합.js

+14
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,17 @@ function solution(a, b) {
1717
}
1818
return answer;
1919
}
20+
21+
//정답 3 - prove-ability
22+
function solution(a, b) {
23+
let answer = 0;
24+
for(let i = Math.min(a, b), len = Math.max(a, b); i <= len; i++) {
25+
answer += i;
26+
}
27+
return answer;
28+
}
29+
30+
//정답 4 - prove-ability
31+
function solution(a, b) {
32+
return Array.from({length: Math.max(a, b) - Math.min(a, b) + 1}, (_, i) => i + Math.min(a, b)).reduce((a, b) => a + b, 0);
33+
}

level-1/문자열-내-마음대로-정렬하기.js

+13
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,16 @@ function solution(strings, n) {
2222
else return a > b ? 1 : -1;
2323
});
2424
}
25+
26+
// 정답 3 - prove-ability
27+
function solution(strings, n) {
28+
// 정렬
29+
strings.sort((a, b) => {
30+
// n번째 클자가 같다면 사전순
31+
if(a[n].charCodeAt() === b[n].charCodeAt()) {
32+
return a > b ? 1 : -1;
33+
} else return a[n].charCodeAt() - b[n].charCodeAt();
34+
});
35+
36+
return strings;
37+
}

level-1/문자열-내림차순으로-배치하기.js

+5
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,8 @@ function solution(s) {
2121
function solution(s) {
2222
return s.split("").sort((a, b) => (a < b ? 1 : -1)).join("");
2323
}
24+
25+
//정답4 - prove-ability
26+
function solution(s) {
27+
return s.split("").sort().reverse().join("")
28+
}

level-1/부족한-금액-계산하기.js

+10
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,14 @@ function solution(price, money, count) {
3636
return 0;
3737
}
3838
return sum_price - money;
39+
}
40+
41+
//정답 3 - prove-ability
42+
function solution(price, money, count) {
43+
let sum = 0;
44+
for(let i = 1; i <= count; i++) {
45+
sum += (i * price)
46+
}
47+
48+
return sum < money ? 0 : sum - money;
3949
}

level-1/서울에서-김서방-찾기.js

+5
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,8 @@ function solution(seoul) {
1111
function solution(seoul) {
1212
return `김서방은 ${seoul.indexOf("Kim")}에 있다`;
1313
}
14+
15+
//정답 3 - prove-ability
16+
function solution(seoul) {
17+
return `김서방은 ${seoul.findIndex(v => v === "Kim")}에 있다`;
18+
}

level-1/수박수박수박수박수박수.js

+8
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,12 @@ function solution(n) {
2323
(i % 2 == 0 ? str = str + '수' : str = str + '박')
2424
}
2525
return str;
26+
}
27+
28+
//정답 3 - prove-ability
29+
function solution(n) {
30+
let answer = '';
31+
answer = "수박".repeat(n / 2)
32+
if(n % 2 !== 0) answer += '수'
33+
return answer;
2634
}

level-1/시저-암호.js

+19
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,23 @@ function solution(s, n) {
6060
}
6161
}
6262
return result;
63+
}
64+
65+
//정답 4 - prove-ability
66+
function solution(s, n) {
67+
var answer = '';
68+
for(let i = 0, len = s.length; i < len; i++) {
69+
if(s[i] === " ") {
70+
answer += " ";
71+
continue;
72+
}
73+
let index = s[i].charCodeAt();
74+
// 65 - 90
75+
// 97 - 122
76+
if(index <= 90 && index + n > 90) index -= 26;
77+
else if (index + n > 122) index -= 26;
78+
79+
answer += String.fromCharCode(index + n)
80+
}
81+
return answer;
6382
}

level-1/약수의-합.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,13 @@ function solution(n) {
5151
}
5252
// 약수란 어떤 수를 나누었을 때 나머지 없이 나누어 떨어지게 하는 그 수입니다.
5353
// 10을 예로 들면, 10은 1, 2, 5, 10 이 나누었을 때 나머지가 없으므로 약수입니다.
54-
// 3, 4, 6, 7, 8, 9 는 나누었을 때 나머지가 남기때문에 약수가 아닙니다.
54+
// 3, 4, 6, 7, 8, 9 는 나누었을 때 나머지가 남기때문에 약수가 아닙니다.
55+
56+
//정답 4 - prove-ability
57+
function solution(n) {
58+
let answer = 0;
59+
for(let i = 1; i <= n; i++) {
60+
if(n % i === 0) answer += i;
61+
}
62+
return answer;
63+
}

level-1/예산.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,21 @@ function solution(d, budget) {
1010
budget -= department
1111
}
1212
return answer;
13-
}
13+
}
14+
15+
//정답 2 - prove-ability
16+
function solution(d, budget) {
17+
let sum = 0;
18+
let count = 0;
19+
// 오름차순 정렬
20+
d.sort((a, b) => a - b);
21+
for(let i = 0, len = d.length; i < len; i++) {
22+
// 작은 수 부터 하나씩 더해준다
23+
sum += d[i];
24+
// 더한 수가 정해진 예산과 같다면 이전까지 센 카운트 반환
25+
if(sum > budget) return count;
26+
count++;
27+
}
28+
29+
return count;
30+
}

level-1/이상한-문자-만들기.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,18 @@ function solution(s) {
5454
5555
대, 소문자 변환, split, reverse, join, map 등등을 활용 해야 하므로
5656
문자열을 연습하는데 좋은 문제입니다.
57-
*/
57+
*/
58+
59+
//정답 4 - prove-ability
60+
function solution(s) {
61+
let answer = '';
62+
s.split(" ").forEach((word) => {
63+
for(let i = 0, len = word.length; i < len; i++) {
64+
if(i % 2 === 0) answer+=word[i].toUpperCase();
65+
else answer+=word[i].toLowerCase();
66+
}
67+
answer += " ";
68+
})
69+
answer = answer.slice(0, answer.length - 1)
70+
return answer;
71+
}

level-1/정수-내림차순으로-배치하기.js

+5
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,9 @@ function solution(n) {
2020
arrN.sort((a, b) => b - a);
2121
// 배열 -> 문자열 -> 정수
2222
return parseInt(arrN.join(""));
23+
}
24+
25+
//정답 3 - prove-ability
26+
function solution(n) {
27+
return parseInt(n.toString().split("").sort((a, b) => b - a).join(""), 10);
2328
}

level-1/최소직사각형.js

+15
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,19 @@ function solution(sizes) {
88
const maxHeight = Math.max(...sizes.map(card => card[1]))
99
answer = maxWidth * maxHeight
1010
return answer;
11+
}
12+
13+
// 정답 2 - prove-ability
14+
function solution(sizes) {
15+
16+
// 가로, 세로 중 큰 값을 가로 길이로 변경(스압)
17+
sizes.forEach(([width, height], index) => {
18+
if(sizes[index][0] < sizes[index][1]) [sizes[index][0], sizes[index][1]] = [sizes[index][1], sizes[index][0]]
19+
})
20+
21+
// 가로, 세로 각각 큰 값 추출
22+
const widthMax = Math.max(...sizes.map(v => v[0]));
23+
const widthHeight = Math.max(...sizes.map(v => v[1]));
24+
25+
return widthMax * widthHeight;
1126
}

0 commit comments

Comments
 (0)