-
[프로그래머스] Level.2 - 멀쩡한 사각형개발공부/코딩테스트 연습문제 2022. 1. 18. 11:23
문제 설명과 제한사항

예시

풀이
class Solution { public long solution(int w, int h) { long answer = 0; double width = w; double height = h; double tmp = 0; for(int i=1; i<=w; i++) { tmp = Math.floor(height - height/width*i); answer += tmp; } return answer*2; } }++
다른 직사각형도 그려보고 했지만 모르겠어서 고민하다 검색해서 풀이방법을 찾았다.
다양한 풀이 방법이 있었는데 기억에 남는건 첫번째는 최대공약수를 찾아 패턴을 찾는방법이었고
두번쨰는 저 대각선을 함수로 생각하고 y = h/w*x 형식으로 높이를 찾아 사용할 수 있는 정사각형의 갯수를 더하는 방법이었다.. 보고 뒤통수가 얼얼했다.

이런식으로 y = 12/8*x 의 그래프를 만든것이다.
저런 부류의 다양한 방식이 있었다. 신기하고 좋은 풀이 였다.
+++
class Solution { public long solution(int w, int h) { long answer = 0; for(int i=1; i<w; i++) { answer += (long)h*(long)i/(long)w; } return answer*2; } }이렇게도 가능하다..
원래 이게 처음 풀이였는데 같은 테스트가 계속 실패했고, 실행시간이 길었던 걸로 보아 큰 값이 테스트에 있어 int 형으로 쓰레기값이 들어갔나보다. 혹시나 해서 전부 형변환 하니까 테스트 성공했다..
'개발공부 > 코딩테스트 연습문제' 카테고리의 다른 글
[프로그래머스] Level.2 - 짝지어 제거하기 (0) 2022.01.19 [프로그래머스] Level.2 - 더 맵게 (0) 2022.01.18 [프로그래머스] Level.2-124나라의 숫자 (0) 2022.01.18 [프로그래머스] 신고 결과 받기 (0) 2022.01.17 [프로그래머스] (1차) 다트 게임 (0) 2022.01.13