코린이의 소소한 공부노트

[LeetCode/Easy] 1313. Decompress Run-Length Encoded List 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1313. Decompress Run-Length Encoded List

무지맘 2022. 12. 24. 01:44

1. Input

1) 정수를 담은 배열 nums

 

2. Output

1) nums의 요소를 2개씩 짝지어 [a, b]로 봤을 때, ba번 나타나게 만든 배열을 모두 이은 새든 배열을 반환

 

3. Constraint

1) 2 <= nums.length <= 100

2) nums.length % 2 == 0

3) 1 <= nums[i] <= 100

 

4. Example

Input: nums = [1,2,3,4] -> Output: [2,4,4,4]

설명:

- 첫 번째: [1, 2] -> 21-> [2]

- 두 번째: [3, 4] -> 43-> [4, 4, 4]

- 만들어진 배열을 전부 이은 [2, 4, 4, 4]를 반환한다.

 

5. Code

1) 첫 코드(2022/06/03)

int n = nums.length / 2;
int freq, val;
String digits = "";
for(int i=0 ; i<n ; i++){
    freq = nums[2*i];
    val = nums[2*i+1];
    for(int j=0 ; j<freq ; j++)
    digits += val + " ";
} // for i

String[] list = digits.split(" ");
int[] result = new int[list.length];
for(int i=0 ; i<list.length ; i++)
    result[i] = Integer.parseInt(list[i]);
return result;

2) 수정해본 코드(2022/12/24)

import java.util.*;

ArrayList<Integer> list = new ArrayList<Integer>();

for(int i=0 ; i<nums.length-1 ; i+=2){
    for(int j=0 ; j<nums[i] ; j++)
        list.add(nums[i+1]);
}

int[] answer = new int[list.size()];
for(int i=0 ; i<answer.length ; i++)
    answer[i] = list.get(i);
return answer;

  - 1번보다는 낫지만, 여전히 비효율적인 코드