난이도 : Level. 1
언어 : Javascript
출제 내역 : 월간 코드 챌린지 시즌 1
내적
- 주어진 각 배열간의 곱들의 합을 구하라
function solution(a, b) {
var answer = 0;
for (let i = 0; i<a.length; i++) {
answer = answer + (a[i] * b[i])
}
return answer;
}
a
배열과 b
배열 각각의 일치하는 인덱스의 값을 곱한 뒤,
그 값들의 합을 구하는 문제였기에, 복잡한 계산은 들어가지 않았습니다.
두 개 뽑아서 더하기
- 숫자가 담긴 배열 중 아무 인덱스의 2개 숫자를 더해서 나온 값을 정렬해서 반환
function solution(numbers) {
var answer = [];
for (let i = 0; i<numbers.length-1; i++) {
for (let l = i+1; l<numbers.length; l++) {
let sum = numbers[i] + numbers[l]
if (answer.indexOf(sum) === -1) {
answer.push(sum)
}
}
}
return answer.sort((a,b)=> a-b);
}
2개의 인덱스끼리 모두 더해주는데,
해당 값이 배열에 없을 때만 그 값을 넣어주고,
마지막엔 배열을 오름차순으로 정렬해서 반환했습니다.
3진법 뒤집기
- 어떤 수를 3진법으로 변환하고 뒤집어서 10진수로 변환한 수 반환
function solution(n) {
var answer = 0;
let newArr = [];
let result = n;
let notation = [];
for (let i = 0; i < n; i++) {
if (Math.pow(3, i) > n) {
break;
} else {
newArr.push(Math.pow(3, i));
}
}
우선 들어오는 수를 제곱수를 이용해서 3진법이 몇자리까지 되는지 확인합니다.
for (let i = newArr.length - 1; i > -1; i--) {
if (result - Math.pow(3, i) * 2 >= 0) {
notation.push(2);
result = result - Math.pow(3, i) * 2;
} else if (result - Math.pow(3, i) >= 0) {
notation.push(1);
result = result - Math.pow(3, i);
} else {
notation.push(0);
}
}
그 다음 이번에도 제곱수를 이용해서 해당 수가
3진법으로 어떻게 되는지 확인해 봅니다.
for (let i = 0; i < notation.length; i++) {
answer += notation[i] * newArr[i];
}
return answer;
}
마지막으로 해당 자리수와 3진법을 서로 곱해줘서
나오는 값을 결과로 내보냅니다.