본문 바로가기

프로그래머스

[코딩테스트] 230915_정수 제곱근 판별, 정수 내림차순으로 배치하기, 하샤드 수, 제일 작은 수 제거하기, 두 정수 사이의 합, 콜라츠 추측, 서울에서 김서방 찾기

728x90

 

 

 


정수 제곱근 판별

function solution(n) {
    return Math.sqrt(n) % 1 == 0 ? Math.pow((Math.sqrt(n) + 1),2) : -1
}

한 줄 쓰기에 재미 들려서 메서드 찾아가면서 풀었다 😆 너무 짜릿해,,,,, ㅎㅎ 이 문제를 풀기 위해서 찾은 메소드는 다음 포스팅에 정리해 두었다.

 

[Javascript] Math.pow(), Math.sqrt()_거듭제곱 메소드, 제곱근 메소드

프로그래머스 코딩테스트를 풀다가 제곱근 문제를 만났다. 제곱근을 어떻게 구해야 하나,,, 반복문을 돌리면서 풀어야 하나 고민을 하다, 제곱근을 구해주는 메서드가 있다고 해서 알아본 내용

oo0ojw.tistory.com

 

 

 


정수 내림차순으로 배치하기

function solution(n) {
    return Number(n.toString().split("").sort((a,b)=>b-a).join(""))
}

sort는 무의식 저편에서 꺼내와 사용했다... 왜 이게 아직도 이해가 안 갈까 ㅠㅠ 사용하는 방식을 외워버리고 만 것이다....ㅎㅎ join 메서드는 배열을 전부 붙여 문자열로 만들어주는 거! 매개변수는 이어 붙일 때 구분자 넣는 거!! 이번엔 구분자 없이 넣었어야 했어서 빈 문자열로!! 

 

 


하샤드 수

function solution(x) {
    var answer = true;
    let nums = x.toString().split("");
    let sum = 0;
    nums.forEach((el)=>{
        sum += Number(el)
    })
    return x % sum == 0 ? true : false ;
}

나는 하샤드 수라는 말이 생소해,,,, 문제 풀이는 어렵지 않았다!

 

 

 


제일 작은 수 제거하기

function solution(arr) {
    var answer = []
    let min = arr[0]
    for(let i=0; i< arr.length ; i++){
        min > arr[i] ? min = arr[i] : min
    }
    let index = arr.findIndex((el)=>{return el == min}) 
    arr.splice(index,1)
    if(arr.length == 0) arr.push(-1)
    return arr;
}

처음에 제일 작은 수를 골라내기 위해서 sort를 사용했는데, 실행하니까 전부 틀려버려서 알아보니까 배열의 순서를 건드리면 안 된다고 하더라고요,,,, 순서를 건드리지 않고 골라내는 방법을 생각해 보고 우선 첫 번째 인덱스 값을 변수 하나에 넣고, 모든 인덱스의 값과 비교해서 제일 작은 값을 넣는 방법으로 해결했다!!

그렇게 가장 작은 수의 값을 골라내고, 골라낸 값의 인덱스를 찾기 위해 findIndex를 구하고, 찾은 인덱스 값으로 splice 해서 제거까지 완료!!

 

 

 


두 정수 사이의 합

function solution(a, b) {
    var answer = 0;
    let B = 0;
    let S = 0;
    if(a < b){
        B = b
        S = a
    }
    else{
        S = b
        B = a
    }
    console.log(B,S)
    for(let i = S; i <= B; i++){
        answer += i
    }
    return answer;
}

 

 

 


콜라츠 추측

function solution(num) {
    var answer = num;
    let count = 0;
        while(answer != 1 && count <= 500){
            if(answer % 2 == 0){
                answer = answer / 2
                console.log("짝수 : ", answer )
                count++

            }
            else{
                answer = answer * 3 + 1
                count++

        }
    }
    if(answer == 1){
        return count
    }  
    else{
        return -1
    }
         
}

머리 안 돌아서 조금 돌아갔지만 결국 해냈다! 

 

 

 


서울에서 김서방 찾기

function solution(seoul) {
    let index = seoul.findIndex((el)=>{
        return el == 'Kim'
    })
    return `김서방은 ${index}에 있다`;
}

 

728x90