[TIL]231113_프로그래머스 연습문제 Lv.1(?)

ㅇㅖㅈㅣ·2023년 11월 13일
2

Today I Learned

목록 보기
24/93
post-thumbnail

👩🏻‍💻 Today Learn

  • 알고리즘 스터디
  • 리액트 숙련 강의 나머지
  • 리액트 숙련 과제 시작

🔐 알고리즘 문제풀이

문제1) 짝수와 홀수

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

풀이

function solution(num) {
     if (num % 2 === 0) {
        return "Even";
    } else {
        return "Odd";
    }
}

조건문 if, else를 이용하여 정수 num을 2로 나누었을때 남는 몫이 0일 경우와 아닐 경우로 나누어 풀었다.


문제2) 평균 구하기

정수를 담고 있는 배열 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문을 이용해 배열의 길이만큼 반복하여 정수를 다 더한 후에 다시 배열의 수에 맞게 나누어서 평균을 구했다.


문제3) 자릿수 더하기

자연수 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()를 이용해 숫자로 다시 변환하여 더한 후 반환하였다.


문제4) 약수의 합

정수 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이 되는 숫자만 골라서 더하기연산자로 더한 후 반환하였다.


문제5) 나머지가 1이 되는 수 찾기

자연수 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함으로써 가장 먼저 발견된 숫자를 바로 반환해주었다.


✍🏻 회고

알고리즘 문제를 풀면서 막히는 부분은 검색도 많이 활용하였다. 처음에는 이러면 의미가 있나? 싶은 생각도 들었지만 보면서 풀이를 이해하고 넘어갔더니 그 다음문제나 다른문제를 풀 때 활용하는것이 가능하였다.
그렇게 몇번 활용하다보니 조금씩 익숙해지면서 내것으로 만들어지는 것 같기도 하였다.
지금은 온전히 내 스스로 풀지 못한것이 있어도 좌절하지말고 반복적으로 활용하고 이해하는것에 힘써보려고 한다.

profile
웰씽킹_나는 경쟁력을 갖춘 FE개발자로 성장할 것이다.

0개의 댓글