반응형
📖 문제
https://school.programmers.co.kr/learn/courses/30/lessons/134239
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 풀이 방식
• 정적
1. 구간 별 그래프의 높이를 저장한다.
2. ranges 배열을 돌면서 해당 구간의 x좌표가 유효한지 판별한다.
3. 2에서 x좌표가 유효하다면, 구간 별 면적을 산출해 계산한다.
구간 별 면적 구하는 공식
: (윗변+아랫변) * 높이 / 2
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import java.util.*;
class Solution {
public double[] solution(int k, int[][] ranges) {
double[] answer = new double[ranges.length];
List<Integer> list = new ArrayList<>(); // 구간별 그래프 높이 저장용 리스트
while(k > 1) {
list.add(k);
if(k % 2 == 0)
k/=2;
else
k = k*3 + 1;
}
list.add(k);
for(int i = 0 ; i < ranges.length ; i++) {
// 유효한지 판별하기
if(ranges[i][0] > ranges[i][1] + list.size() - 1) { // 시작값이 끝값보다 큰 경우
answer[i] = -1;
continue;
}
else if(ranges[i][0] == ranges[i][1] + list.size() - 1) {
answer[i] = 0;
continue;
}
// 구간별 면적 산출 후 더하기 (시작 범위부터 x를 1씩 증가시키며)
// [공식] (윗변+아랫변) * 높이 / 2
double area = 0;
for(int j = ranges[i][0] ; j < ranges[i][1] + list.size() - 1 ; j++) {
area += (list.get(j) + list.get(j+1)) / 2.0;
}
answer[i] = area;
}
return answer;
}
}
|
cs |
💦 어려웠던 점
- 구간 별 면적을 어떻게 구해야 할지 공식을 잊고 있었다.
🧐 새로 알게 된 내용
- 리스트에 순서대로 저장되니까 ranges의 범위를 돌면서 리스트의 값을 2개 가져와 해당 구간의 넓이를 구하면 되는 것이었다..
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[프로그래머스] 우박수열 정적분 (Java)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방
maicoding.tistory.com
(Java) 프로그래머스 - 우박수열 정적분
문제가 콜라츠 추측과 정적분이 같이 있어서 조금 읽기 어려웠다. 문제가 이해가 된다면 그리 어렵지 않은 문제였다. 인풋값이 작아서 시간 초과 걱정은 하지 않았고 완전 탐색으로 모든 넓이의
rovictory.tistory.com
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level3] 표 편집 (JAVA) (2) | 2024.07.24 |
---|---|
[프로그래머스/Level1] 신고 결과 받기 (JAVA) (0) | 2024.07.18 |
[프로그래머스/Level2] 교점에 별 만들기 (JAVA) (0) | 2024.06.11 |
[프로그래머스/Level3] 부대 복귀 (JAVA) (2) | 2024.06.08 |
[프로그래머스/Level1] [PCCE 기출문제] 10번 / 데이터 분석 (JAVA) (0) | 2024.05.16 |