👩🏻💻 Today Learn
🔐 알고리즘 문제풀이
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
function solution(num) {
if (num % 2 === 0) {
return "Even";
} else {
return "Odd";
}
}
조건문 if, else를 이용하여 정수 num을 2로 나누었을때 남는 몫이 0일 경우와 아닐 경우로 나누어 풀었다.
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
function solution(arr) {
let answer = 0;
for (let i=0; i<arr.length; i++){
answer += arr[i]
}
return answer / arr.length;
}
for문을 이용해 배열의 길이만큼 반복하여 정수를 다 더한 후에 다시 배열의 수에 맞게 나누어서 평균을 구했다.
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
function solution(n) {
let answer = 0;
let a = String(n)
for (let i=0; i<a.length; i++){
answer += Number(a[i])
}
return answer;
}
정수 n을 String()
을 이용해 문자열로 변환한 후 위에 문제처럼 for문을 이용해 배열의 수를 더했다. 그런데 이때 문자열로 더하는 것이 아닌 Number()
를 이용해 숫자로 다시 변환하여 더한 후 반환하였다.
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
function solution(n) {
let answer = 0;
for (let i = 0; i<=n; i++){
if (n % i === 0) {
answer += i
}}
return answer;
}
정수 n의 약수를 구하기 위해 먼저 for문을 이용해 정수 n보다 작은수를 찾았다. 그리고 조건문으로 찾은수를 정수 n으로 나누었을 때 나머지가 0이 되는 숫자만 골라서 더하기연산자로 더한 후 반환하였다.
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
function solution(n) {
for (let x = 0; x < n; x++) {
if (n % x === 1) {
return x
}}
}
자연수 n을 x로 나누어야 하기 때문에 x는 n보다 작을것이다. 따라서 for문으로 n보다 작은 수인 x를 하나씩 찾으면서 if문으로 나눴을 때 1이 남는 수라는 조건을 부여했다.
그 중 가장 작은 자연수를 찾는것이 문제이기 때문에 if의 결과에 return함으로써 가장 먼저 발견된 숫자를 바로 반환해주었다.
✍🏻 회고
알고리즘 문제를 풀면서 막히는 부분은 검색도 많이 활용하였다. 처음에는 이러면 의미가 있나? 싶은 생각도 들었지만 보면서 풀이를 이해하고 넘어갔더니 그 다음문제나 다른문제를 풀 때 활용하는것이 가능하였다.
그렇게 몇번 활용하다보니 조금씩 익숙해지면서 내것으로 만들어지는 것 같기도 하였다.
지금은 온전히 내 스스로 풀지 못한것이 있어도 좌절하지말고 반복적으로 활용하고 이해하는것에 힘써보려고 한다.