-
[Programmers] 멀쩡한 사각형Algorithm 2023. 3. 31. 08:50
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/62048
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이
몫과 나머지를 나누어서 푼다.
가로와 세로중 큰걸 작은걸로 나누어서 한칸 지날때마다 얼마나 영역을 차지하는지 계산한다.
예를 들어, w=8, h=12면
작은 w기준으로 첫번째 칸에서는 12/8 = 1 … 4 → 두칸 차지한다.
다음 칸은 1과 4/8 + 1과 4/8해서 3이기 때문에 → 두칸 차지한다.
즉, 분수의 덧셈을 계속해서 나머지가 0이면 정수부의 next - prev
나머지가 있으면 next - prev + 1이된다.
3. 결과
4. 코드
function solution(w, h) { var answer = w * h; var large = Math.max(w, h); var small = Math.min(w, h); var q = parseInt(large / small); var r = large % small; var i = 0; var j = 0; var subBlock = 0; for(var k=0; k < small; k++){ var i2 = i + q; j += r; i2 += parseInt(j / small); j = j % small; if(j==0){ subBlock += i2 - i; }else{ subBlock += i2 - i + 1; } i = i2; } return answer - subBlock; }
5. 어려웠던 점
자바스크립트의 경우 parseInt를 써주어야지 몫이 구해진다는 점…
몫과 나머지를 안하고 그냥 나눠서 소수로 계산할시에 계산이 정확하지 않기때문에 분수 계산을 해주는 부분이 귀찮았다.
'Algorithm' 카테고리의 다른 글
[Programmers] 조이스틱(JS) (0) 2023.03.31