본문 바로가기

프로그래머스

[코딩테스트] 230914_평균 구하기, 짝수와 홀수, 약수의 합, 자릿수 더하기, x만큼 간격이 있는 n개의 숫자, 나머지가 1이 되는 수 찾기, 수박수박수박수박수박수?, 숫자 문자열과 영단어, 자연수 ..

728x90

 

 

 


평균 구하기

function solution(arr) {
    var answer = 0;
    arr.forEach((el)=>{
        answer += el
    })
    return answer / arr.length;
}

 

 

 


짝수와 홀수

function solution(num) {
    return num % 2 == 0 ? "Even" : "Odd"
}

 

 

 


약수의 합

function solution(n) {
    let res = 0;
    let index = 1;
    while(index <= n){
        if(n % index == 0) res += index
        index++
    }
    return res;
}

내 머릿속에서는 for문안에 for문으로 약수를 구하는 방법밖에 생각나지 않아, 좀 더 쉬운 알고리즘을 찾아 답을 구했다. 앞으로 자주 사용해야지!!

 

 

 


자릿수 더하기

function solution(n)
{
    var answer = 0;
    n.toString().split("").forEach((el)=>{
        let num = Number(el)
        answer += num
    })
    
    return answer;
}

또 까먹었다.... split으로 자리마다 잘라서 배열화 시켜주는건 알겠는데 매개변수에 어떤 걸 넣어야하는지 까먹어서 또 0 넣었잖아....ㅜㅜ 더 열심히 공부해야지.... number 타입으로 변환 시켜주는것도 다시 검색해봤다... 이제 기억해!!!!

 

 

 


x만큼 간격이 있는 n개의 숫자

function solution(x, n) {
    var answer = [];
    let num = x;
    
    while(answer.length < n){
        answer.push(num)
        num += x
    }
    return answer;
}

 

 

 


나머지가 1이 되는 수 찾기

function solution(n) {
    let num = 1;
    while(num <= n){
        if(n % num == 1) return num
        num ++
    }
}

 

 

 


수박수박수박수박수박수?

function solution(n) {
    var answer = '';
    while(answer.length < n){
        answer.length % 2 == 0 ? answer += '수' : answer += '박'      
    }
    return answer;
}

 

 

 


숫자 문자열과 영단어

function solution(s) {
    var answer = s;
    while(isNaN(Number(answer))){
        answer = answer.replace('zero','0')
        answer = answer.replace('one','1')
        answer = answer.replace('two','2')
        answer = answer.replace('three','3')
        answer = answer.replace('four','4')
        answer = answer.replace('five','5')
        answer = answer.replace('six','6')
        answer = answer.replace('seven','7')
        answer = answer.replace('eight','8')
        answer = answer.replace('nine','9')
    }
    return Number(answer);
}

 

 

 


자연수 뒤집어 배열로 만들기

function solution(n) {
    var answer = [];
    n.toString().split("").forEach((el)=>{
        answer.unshift(Number(el))
    })
    return answer;
}

unshift() 메소드.... 기억해... 배열의 0번째 인덱스로 값을 추가해 주는 거... 또 un빼먹지 말고,,,,

 

 

 


문자열을 정수로 바꾸기

function solution(s) {
    return Number(s)
}

응....? 이게 맞나...? 이게 1레벨....????

 

 

 


문자열 내 p와 y의 개수 

function solution(s){
    var answer = true;
    let arr = s.split("")
    let P = arr.filter((el)=>{return el == 'p' || el == 'P'}).length
    let Y = arr.filter((el)=>{return el == 'y' || el == 'Y'}).length
    return P == Y ? true : false
}

처음엔 for-of로 문제를 풀었었는데 테스트 통과를 못해서 질문하기를 살펴보다가 봐버린 방법,,,, fiter는 배열만 사용가능한 메서드인줄 알았다. filter 열심히 써야지~

728x90