[프로그래머스/코딩테스트 모음/Javascript] 8

TED·2023년 8월 20일
0

Javascript CodingTest

목록 보기
8/63
post-thumbnail
  • 눈이 너무 아파서 오늘 하루종일 컴퓨터를 못봤다가 TIL은 써야하니 몇문제 풀러왔다..

<오늘의 문제>

🌟 = 내가 생각한 난이도있는 풀이
1. 수박수박수박수박수박수? 1레벨
2. 내적 1레벨
3. 약수의 개수와 덧셈 1레벨

1. 수박수박수박수박수박수?

function solution(n) {
    var answer = '';
    for(let i = 1; i <= n; i++) { // 자연수니까 초기값은 1로 시작한다.
        if(i % 2 === 0){ 
            answer += "박"; // n값이 짝수일때, "박"을 카운팅
        } else {
            answer += "수"; // n값이 홀수일땐, "수"을 카운팅
        }
    }
    
    return answer;
}
  • 나의 풀이
    : 어...일단 처음엔 문자열로 바꿔서 인덱스하나하나에 값을 어떻게 넣어야하지..하고 고민하다가
    그냥 있는그대로 풀면되는걸 가지고...어후.. 바보같았다..ㅠㅠ
    일단 자연수를 이용하기 때문에 n의 length값은 필요없었고, n값까지의 범위를 구해야하니 <= 을 조건식에 넣었다.
    그래서 짝수 자리엔 "박"이, 홀수 자리엔 "수가"가 카운팅되도록 answer값을 만들었당..

2. 내적

function solution(a, b) {
    var answer = 0;
    
    for(let i = 0; i < a.length; i++){
        for(let j = 0; j < b.length; j++){
            answer = answer + (a[i] * b[j]);
        }
    }
    return answer;
}
// 왜 a랑 b을 나눠 생각해야한다고 했을까? 
  • 나의 첫 번째 오답 풀이
    : a랑 b를 나눠서 이중 for문을 해야된다고 그냥 단순하게 생각해버렸다...
function solution(a, b) {
    var answer = 0;
    
    for(let i = 0; i < a.length; i++){
        answer += (a[i] * b[i]);
    }
    
    return answer;
}
  • 나의 풀이
    : 결국 인덱스 값에 i가 각각의 배열에 들어가도 서로 다르게 적용된다는 걸 왜 바로같이 생각했지.. 바보다

3. 약수의 개수와 덧셈🌟🌟🌟🌟🌟🌟

function solution(left, right) {
    var answer = 0;

    for(let i=left; i<=right; i++) {
        Math.sqrt(i) % 1 === 0 ? answer-=i : answer+=i;
    } // 제곱근이 정수일때는 빼줘라 !
      // 9, 16, 25, 36, 49, 64 ....
      // 제곱수는 약수의 개수가 홀수이다..
    return answer;
}
  • 나의 풀이
    : 도저히 풀수가 없어서 머리가 터질뻔했다. 제곱근 구하는 메서드는 알고있었지만 수학적 개념이 부족한 나로써는 어떻게 써야할지도 몰랐고,
    구글링으로 문제 풀이를 하다가 제곱근의 정의를 좀 더 알게됬다..

  • 🌟 제곱수의 경우, 약수들은 짝지어지는 것이 아니라 중간에 하나의 약수만 존재한다
    예를 들어, 9의 약수는 1, 3, 9인데 서로 짝지어지는 약수가 없다.
    하지만 12의 경우에는 약수들이 1과 12, 2와 6으로 짝지어진다...
    고로,,, 제곱수는 약수의 개수가 '홀수'이다 🌟!!!

function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}
  • 다른 사람 풀이
    : 제곱근이 정수인 경우에 약수의 개수는 홀수이고, 정수가 아니라면 짝수다 (소수일 경우).
profile
컴맹 개발 입문자

0개의 댓글