Lv1.
function solution(numbers) {
var answer = 45;
for(i = 0; i < numbers.length; i++){
answer = answer - numbers[i]
}
return answer;
}
1) reduce쓰기 (reduce 공부하기!)
function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
2) 포함되지 않은 경우, 더한다.
function solution(numbers) {
let sum = 0
for(let i = 0 ; i < 10 ; i ++) {
if(!numbers.includes(i)) {
sum+=i
}
}
return sum
}
※ 개인적으로 2)번이 좋은 풀이라고 생각한다.
숫자가 많으면 합을 구해야하는데 더 비효율적이지 않을까?
function solution(participant, completion) {
var answer = '';
participant.sort();
completion.sort();
for(i = 0 ; i < participant.length ; i++){
if(participant[i] != completion[i]){
answer = participant[i];
break
}
}
return answer;
}
1) map
var solution=(_,$)=>_.find(_=>!$[_]--,$.map(_=>$[_]=($[_]|0)+1))
2) Map
function solution(participant, completion) {
const map = new Map();
for(let i = 0; i < participant.length; i++) {
let a = participant[i],
b = completion[i];
map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);
}
for(let [k, v] of map) {
if(v > 0) return k;
}
return 'nothing';
}
※ Map, Hash 공부하기
출제의도는 Hash였다. sort도 마찬가지로 데이터가 많으면 어떻게 비교를 할지 다시한번 생각해보기.
function solution(a, b) {
var answer = 0;
var min = Math.min(a,b);
var max = Math.max(a,b);
for (i = min; i <= max ; i++){
answer += i
}
return answer;
}
function adder(a, b){
var result = 0
return (a+b)*(Math.abs(b-a)+1)/2;
}
※ a와b의 관계에 절대값을 구해서 값을 구한다.
ex) 1 ~ 10까지를 더할때는 b/2(a+b) 공식을 활용할 수 있다.