programmers.co.kr/learn/courses/30/lessons/62048
코딩테스트 연습 - 멀쩡한 사각형
가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을
programmers.co.kr
꽤 간단한 문제인데도 핵심을 잘 파악하지 못했다.
규칙을 찾는 문제라고 생각하고 규칙을 찾으려했는데 잘 찾아지지 않았다.
가로로 가능한 사각형만 셀 때 10, 9, 7, .. 이런식으로 되니까 뭔가 있지않을까라고 생각만했지
기울기..를 잘 생각하지 못했다.
수학이라고 생각하고 좌표로 바꿔 생각하면 정말 쉽게 풀 수 있는 문제.
그리고 형 변환에 대해서도 다시 생각하게 했는데
만약, h/w*i 이런식으로 순서를 바꾸면 값이 다르게 나온다.
이유는 int타입끼리 나누면 int값이 나오고 거기에 곱하는 격이니 소숫점을 아예 못쓰게된다.
미리 곱할 것들을 곱한 후에 나누면 원하는 정수를 얻을 수 있다.
public long solution(int w, int h) {
long answer = 0;
for(int i=1; i<w; i++) {
long value = h*i/w;
answer += value;
}
return answer*2;
}
'Algorithm > Mathematics' 카테고리의 다른 글
[프로그래머스] 124 나라의 숫자 (0) | 2021.03.31 |
---|