Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구름LEVEL
- 도커
- Java
- 주니어
- 자료구조
- 스프링부트
- 코딩테스트
- 백엔드
- 프로그래머스
- 해시맵
- 이직
- 문자열
- 명령어
- 배열
- 스프링 부트
- HashMap
- IntelliJ
- spring
- 해결
- spring boot
- 스프링
- 인텔리제이
- HTTP
- dfs
- Linux
- docker
- 스타트업
- 구현
- 개발자
- bfs
Archives
- Today
- Total
마이의 개발 블로그
[프로그래머스] 우박수열 정적분 (Java) 본문
반응형
접근 방식
제시된 용어와 그래프에 잠깐 당황하긴 했으나 이해하고보니 구간별 면적을 구하여 더하면 해결할 수 있는 문제였다.
로직 설명
- 숫자 k에 대한 우박수열을 구하여 ArrayList에 저장함 (구간별 그래프의 높이)
- 제시된 x좌표 유효 여부 판별 후 예외처리
- 제시된 x좌표들을 기준으로 구간별 면적 산출 후 더해주기 (사다리꼴: (윗변 + 아랫변) * 높이 / 2)
작성 코드
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;
}
double dimension = 0;
for(int j = ranges[i][0]; j < ranges[i][1] + list.size() - 1; j++){
dimension += (list.get(j) + list.get(j + 1)) / 2.0;
}
answer[i] = dimension;
}
return answer;
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 프린터 (Java) (0) | 2023.01.27 |
---|---|
[프로그래머스] 타겟 넘버 (Java) (0) | 2023.01.27 |
[프로그래머스] 다트 게임 (Java) (0) | 2023.01.24 |
[프로그래머스] 멀리 뛰기 (Java) (0) | 2023.01.20 |
[프로그래머스] 신고 결과 받기 (Java) (0) | 2023.01.20 |
Comments