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

TED·2023년 9월 8일
0

Javascript CodingTest

목록 보기
22/63
post-thumbnail

<오늘의 문제>

  1. 숨어있는 숫자의 덧셈 (1)
  2. 짝수는 싫어요
  3. 중앙값 구하기
  4. 제곱수 판별하기
  5. 세균 증식

1. 숨어있는 숫자의 덧셈 (1)

function solution(my_string) {
    var answer = 0;
    const newString = my_string.replaceAll(/[a-zA-Z]/g, "").split("")
    
    for(let i = 0; i < newString.length; i++) {
        answer += Number(newString[i])
    }
    return answer;
}
  • 나의 풀이
    : 자바로 풀었던 문제인데 /[a-zA-Z]/g 정규식 표현을 몰라서 애먹었다.
    일단 새로운 변수값을 선언하고 my_string의 알파벳을 모두 제외한뒤 split으로 나머지 값(숫자)하나씩 뽑아줬고,
    남아있는 숫자들은 문자열로 정리되어있으니, Number로 변환을 시켜준뒤 answer값에 넣었다.

2. 짝수는 싫어요

function solution(n) {
    var answer = [];
    
    for(let i = 0 ; i <= n ; i++) {
        if (i % 2 !== 0) {
            answer.push(i)
        }
    }
    return answer;
}
  • 나의 풀이
    : 뭐....그렇다 짝수 구하는 공식은 몸에 베였다

3. 중앙값 구하기

function solution(array) {
   
    const middleNumber = array.sort((a, b) => a - b)[Math.floor(array.length / 2)]
    
    return middleNumber;
}
  • 나의 풀이
    : 새로운 변수값을 선언한 뒤 array값을 오름차순을 해주고 인덱스값을 length / 2 을 하고 소주점을 뺴주면
    배열의 정중앙 인덱스가 나온다.
const solution = (array) => 
    array
        .sort((a, b) => a - b)
        .at(Math.floor(array.length / 2))
  • 다른 사람 풀이
    : .at은 간간히 다른 사람 풀이에서 보이는데 요즘 자주 보이는거같다
    인덱스값을 나타내준다고 하네.

4. 제곱수 판별하기

function solution(n) {
    var answer = 0;
    const squareNumber = Math.sqrt(n) // 제곱근 구하는 메소드
    
    if (Math.floor(squareNumber) === squareNumber) {
        answer = 1;  // 제곱수가 아니면 예를 들어 5는 2.xxx의 제곱근이 나오므로,
    } else {         // 소수점을 뺀값과 같은지 비교하면 제곱수인지 아닌지 판별된다.
        answer = 2;
    }
    
    return answer;
}
  • 나의 풀이
    : 주석에 설명을 달아뒀다. 제곱근 문제는 심심찮게 나오고 내 머리로는 메소드를 쓰지않고 구하는 식이
    전혀 머리속에 떠오르지않는다.. 쉽게 갈 수 있는길이 있다면 그렇게 가고싶다 ㅠ..
function solution(n) {
    return Math.sqrt(n) % 1 === 0 ? 1 : 2;
}
  • 다른 사람 풀이
    : 소수는 1로 나누었을때 0이 나올 수 없다..! 이럴슈가

5. 세균 증식

function solution(n, t) {
     for(let i = 1; i <= t; i++) {
         n *= 2
    }
    return n;
}
  • 나의 풀이
    : 처음엔 제곱에만 연연하다보니 값이 계속 작은 값으로 출력되서 문제를 다시보고 거듭제곱이라는걸 깨달았다.
    반복문을 돌면서 4, 8 식으로 올라가며 값을 더하게된다.
function solution(n, t) {
    var answer=0;
    return n * (2 ** t); // 거듭제곱
} 
  • 다른 사람 풀이
    : ** 라는 연산자는 아예 잊고있었는데 이렇게 유용하게도 쓰이는구나?
profile
컴맹 개발 입문자

0개의 댓글