현인

[프로그래머스] 멀쩡한 사각형 with JS 본문

알고리즘

[프로그래머스] 멀쩡한 사각형 with JS

현인(Hyeon In) 2023. 3. 30. 22:31

알고리즘 스프린트 8일차 - [프로그래머스] Lv 2. 멀쩡한 사각형

https://school.programmers.co.kr/learn/courses/30/lessons/62048

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소요시간

1시간

문제 접근 방식은 빨리 찾았지만 자료형 처리가 난관이었다...

 

계획

어떻게 풀까 고민을 하면서 수학적으로 접근하면 좋을 것 같다는 생각이 들었고, 일차 방정식을 활용한 풀이가 떠올랐다

 

풀이

  • answer에 전체 영역의 넓이를 저장한다
  • 대각선을 1차 방정식으로 보고 기울기를 w/h로 구한다
  • 방정식의 치역의 범위를 계산 하기위해 치역의 시작값을 0으로 미리 설정한다.
  • 1부터 w까지 방정식에 대입하고 해를 구한다
    • 구해진 해를 올림하여 방정식의 치역의 끝값을 구한 뒤 범위를 계산한다.
    • 치역의 범위를 answer에서 빼준다
    • 구해진 해를 내림하여 치역의 시작값을 갱신한다
  • answer 반환

결과

코드

더보기
function solution(w, h) {
    let answer = BigInt(w*h);
    let start = 0;
    for(i = 1; i <= w; i++){
        let temp = h*i/w;
        
        let end = Math.ceil(temp);
        answer -= BigInt(end - start);
        start = Math.floor(temp);
    }
    return answer;
}

 

마치며

자바스크립트로 알고리즘 문제를 푼지 2주정도 되어 가는데 처음으로 자바스크립트에 실망한 문제.. 소수점 처리가 정확하지 않아서 계속 틀리는 케이스가 생겼다.. 라이브러리 안쓰고 어떻게 풀어야 할지 고민을 더 해봐야겠다.. 이상!

반응형