프로그래머스 Lv.0 배열 만들기 3개발자가 되기까지 (2023.08.16~2024.04.15)/[Algorithm] Programmers ver.Java2024. 1. 12. 03:38
Table of Contents
<1st Try>
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
int leng = 1;
for(int i = 0; i < intervals.length; i++) {
leng *= intervals[i][1] - intervals[i][0];
}
int[] answer = new int [leng];
int idx = 0;
for(int i = 0; i < intervals.length; i++) {
for(int j = intervals[i][0]; j <= intervals[i][1]; j++) {
answer[idx++] = arr[j];
}
}
return answer;
}
}
샘플 테스트는 통과가 되는데 채점에서 모두 말아먹었다.
시간초과가 있는 것으로 보아, 배열 길이를 다시 점검해보았다.
intervals가 [1, 3] [0, 4] 일 때, answer의 배열 길이는 총 8이 필요하다.
그래서 처음에는 intervals[i][1] - intervals[i][0]의 값을 *=로 누적하여 길이를 구해주었다.
<Solution>
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
// answer 길이 구하기
int leng = 0;
for(int i = 0; i < intervals.length; i++) {
leng += intervals[i][1] - intervals[i][0]+1;
}
// answer 길이 선언
int[] answer = new int [leng];
//
int idx = 0;
for(int i = 0; i < intervals.length; i++) {
for(int j = intervals[i][0]; j <= intervals[i][1]; j++) {
answer[idx++] = arr[j];
}
}
return answer;
}
}
다른 방식으로 8이 나오게 하려면 모든 [i][1]의 합에서 모든 [i][0]의 합을 빼준 뒤 +1을 해주는 방법이 있다.
그래서 intervals[i][1] - intervals[i][0] +1의 값을 +=로 누적하여 길이를 다시 구해주었다.
728x90
@rlozlr :: 얼렁뚱땅 개발자
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!