프로그래머스 알고리즘 테스트
자릿수 더하기
solution.js
function solution(n) {
var answer = 0;
return answer;
}
나의 풀이
function solution(n) {
const str = String(n).split('').map(Number);
return str.reduce((a,b) => a+b )
}
다른 풀이1
function solution(n) {
return n
.toString()
.split("")
.reduce((acc, cur) => acc + Number(cur), 0);
}
순서쌍의 개수(상)
solution.js
function solution(n) {
var answer = 0;
return answer;
}
나의 풀이
function solution(n) {
let answer = 0
for(let i = 0; i <= n; i++){
if(n % i === 0 ){
answer += 1
}
}
return answer;
}
다른 풀이1
function solution(n) {
let ans = 0;
for (let i = 1; i < Math.sqrt(n); i++)
if (n%i === 0) ans+=2;
return Number.isInteger(Math.sqrt(n)) ? ans+1 : ans;
}
개미군단(상)
solution.js
function solution(hp) {
var answer = 0;
return answer;
}
나의 풀이
function solution(hp) {
const first = Math.floor(hp / 5);
const second = Math.floor((hp - first * 5) / 3);
const third = hp - first * 5 - second * 3;
return first + second + third;
}
console.log(solution(23))
다른 풀이1
function solution(hp) {
return Math.floor(hp/5)+Math.floor((hp%5)/3)+(hp%5)%3;
}
숨어있는 숫자의 덧셈(상)
solution.js
function solution(my_string) {
var answer = 0;
return answer;
}
나의 풀이
function solution(my_string) {
let fil = my_string.split('').filter(Number).map(Number)
return fil.reduce((a,b) => a+b )
}
다른 풀이1
function solution(my_string) {
const answer = my_string.replace(/[^0-9]/g, '')
.split('')
.reduce((acc, curr) => acc + Number(curr), 0);
return answer;
}
다른 풀이2
function solution(my_string) {
return my_string.match(/[0-9]/g).reduce((a,b) => parseInt(a)+parseInt(b));
}
문자열 정렬하기(1)
solution.js
function solution(my_string) {
var answer = 0;
return answer;
}
나의 풀이
function solution(my_string) {
let arr = my_string.split('').filter((a) => !isNaN(a)).map(Number).sort()
return arr;
}
다른 풀이1
function solution(my_string) {
return my_string.match(/\d/g).sort((a, b) => a - b).map(n => Number(n));
}
다른 풀이2
function solution(my_string) {
return my_string.split("").filter((v) => !isNaN(v)).map((v) => v*1).sort((a,b) => a-b)
}
가위 바위 보
solution.js
function solution(rsp) {
var answer = 0;
return answer;
}
나의 풀이
function solution(rsp) {
let answer = {'0':'5', '2':'0','5':'2'};
return [...rsp].map(v => answer[v]).join('')
}
다른 풀이1
function solution(rsp) {
let arr = {
2: 0,
0: 5,
5: 2
};
var answer = [...rsp].map(v => arr[v]).join("");
return answer;
}
다른 풀이2
function solution(rsp) {
return rsp.split("").map((v) => v==="2" ? 0 : (v==="0" ? 5 : 2)).join("")
}
세균 증식
solution.js
function solution(n, t) {
var answer = 0;
return answer;
}
나의 풀이
function solution(n, t) {
return n*(Math.pow(2,t));
}
다른 풀이1
function solution(n, t) {
return n << t;
}
다른 풀이2
function solution(n, t) {
return n*(2**(t))
}
주사위의 개수
solution.js
function solution(box, n) {
var answer = 0;
return answer;
}
나의 풀이
function solution(box, n) {
return (parseInt(box[0]/n) * parseInt(box[1]/n) * parseInt(box[2]/n));
}
다른 풀이1
function solution(box, n) {
return box.reduce((acc,v) => acc * Math.floor(v / n), 1);
}
- 메서드 체이닝에 대한 이해도가 아직 낮아서 구현 하는게 조금 어렵다 급하게 외우려고 하지말고 하나씩 이해하는 식으로 천천히 다시 풀어봐야 할것 같다. 알고리즘 lv0 문제 들은 다시 처음부터 기본기를 다진다는 마음으로 반복해서 풀어보고 내것으로 만들어 봐야겠다.