[6/21 TIL] 수학 문제가 나를 괴롭힌다~

haegnim·2023년 6월 21일
0

TIL

목록 보기
18/52

회고

아침부터 최소공배수로 고통받았다. 수학식을 코드로 짜는 건 너무 어려웠다. 어떤 건 풀리고 어떤 건 죽어라 안 풀린다. 그런데 생각하지 못한 간단한 식이 존재했다. 😥
팀원 분께 수학식 코드를 외우는 방법을 추천 받았다. 좋은 방법이라 생각한다. 내일 시험 끝나고 풀었던 수학 문제들 정리해야겠다. 평소에 블로그 한 페이지에 모아 놓을 걸.




오늘은 못 풀겠다. 나중에 리벤지

프로그래머스 lv. 소수 찾기

프로그래머스 lv. 소수 찾기

효율성 테스트를 통과하지 못했다.
가장 효율이 좋은건 에라토스테네스의 체라고 한다. 이 알고리즘을 적용하기엔 아직 이해가 되질 않아서 내일 시간나면 다시 봐야겠다.

팀원분이 지적해줘서 Math.sqrt()가 루트 구하는 메서드임을 알게되었다. 그리고 나머지가 0이면 소수가 아니다. 왜 입으로는 나눠지면 안되는데 하면서 나머지가 0일때 소수를 구하고 있었지???
그리고 내가 쓴 방식으로 소수를 구하려면 isPrime로 소수인지 아닌지 false, true로 분별해야한다. if안에서 add를 진행하면 i가 소수인지 아닌지 판별을 못하고 다 들어간다. 4%3 !== 0도 들어가고 9%2 !==0도 들어간다.

function solution(n) {
    var answer = new Set();
    for (let i = 2; i <= n; i++) {
        let isPrime = true;
        for (let j = 2; j <= parseInt(Math.sqrt(i)); j++) {
            if (i % j === 0) {
                isPrime = false;
                break;
            }
        }
        if (isPrime) {
            answer.add(i);
        }
    }
    return answer;
}

프로그래머스 lv. 크레인 인형뽑기 게임

프로그래머스 lv. 크레인 인형뽑기 게임

이건 손으로 그려도 모르겠네. 문제를 이해하지 못 했나봐. 손으로 써도 5개가 나오는 것 같은데?
그리고 스택이라 생각했는데 다른 글을 읽어보니 스택, 큐, ... 을 썼다고 한다. Why죵...?
다른 사람 풀이도 제법 길더라. 그래서 다시 한번 생각해보기로 했다. 일단 손으로 그려도 틀리니까 문제 이해도가 나쁜 듯 하다.

function solution(board, moves) {
    const Arr = [...board]
    // console.log(Arr)
    let second = []
    let third = [];
    
    for(let i = 0;i<board.length;i++){
        let first = []
        for(let j = 0;j<board.length;j++){
            if(board[j][i]!==0){
                first.push(board[j][i])
            }
        }
        second.push(first)
    }
    
    for(let k = 0; k<moves.length;k++){
        const num = Number(moves[k])-1
        const idx = second[num].length -1
        console.log(second[num][idx])
        if(second[num][idx]!==third[k]&&second[num][idx]){
            third.push(second[num][idx])
            second[num].shift()
        }
        
    }
    console.log(second)
    console.log(third)

    // third.toString().replace(/(.)/g,'')
    // const result = (moves.length - third.length)*2
    return third
}

0개의 댓글