
배열의 길이를 2의 거듭제곱으로 만들기
정수 배열 arr이 매개변수로 주어집니다.
arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다.
arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
class Solution {
public int[] solution(int[] arr) {
int arrSize = arr.length;
for(int i = 1; i < arrSize; i++){
int powN = (int) Math.pow(2,i);
if(arrSize <= powN){
arrSize = powN;
break;
}
}
int[] answer = Arrays.copyOf(arr, arrSize);
return answer;
}
}
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int arrSize = 1;
while (arrSize < arr.length) {
arrSize *= 2;
}
int[] answer = Arrays.copyOf(arr, arrSize);
return answer;
}
}
1. answer 배열의 크기를 구한다
- arr배열크기 < answer배열의 크기 < 최소한의 2의 거듭제곱
2. answe배열의 크기만큼 arr배열을 복사한다
- arr 원소를 차례로 복사하고, 뒤에 남는 원소들은 0으로 초기화
거듭제곱 키워드를 보자마자 Math.pow() 메서드를 떠올려서 풀었는데 이후에 다른 사람풀이를 보니 굳이 pow() 사용하지 않고도 * 연산자만으로 크기를 구할 수 있었다.
JAVA Math클래스
- pow() 메서드
- public static double pow(double a, double b)
- a^b : 밑 값 a를 지수 값 b만큼 제곱 해서 반환
- 지수 값(b)이 음수 일 때, 1/a^b 반환
- 지수 값(b)이 0일 때, 밑(a)이 0이 아니라면 결과는 항상 1 반환
- 지수 값(b), 밑(a) 모두 0 이면 NaN(Not a Number) 반환
JAVA Arrays클래스
- copyOf() 메서드
- public static int[] copyOf(int[] original, int newLength)
- 복사할 원본 배열(original)을 새배열의 길이(newLength)만큼 복사
- 깊은 복사로 배열의 값이 변경이 있어도 서로 영향을 주지 않음
- 새배열의 길이가 원본 배열 길이보다 작으면 길이 이후는 잘려서 반환
- 새별열의 길이가 원본 배열 길이보다 크면 원본 배열 내용을 포함하고 이후 요소들은 기본값(int의 경우 0)으로 채워짐
- sort() 메서드
- public static int[] sort(int[] arr)
- 배열(arr)을 오름차순 정렬
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 17 문자열 (0) | 2024.08.10 |
---|---|
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 15 리스트(배열), 문자열 (0) | 2024.08.07 |
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 14 리스트(배열) (0) | 2024.08.04 |
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 9 문자열 (0) | 2024.07.25 |
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 8 조건문, 문자열 (4) | 2024.07.25 |

배열의 길이를 2의 거듭제곱으로 만들기
정수 배열 arr이 매개변수로 주어집니다.
arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다.
arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
class Solution {
public int[] solution(int[] arr) {
int arrSize = arr.length;
for(int i = 1; i < arrSize; i++){
int powN = (int) Math.pow(2,i);
if(arrSize <= powN){
arrSize = powN;
break;
}
}
int[] answer = Arrays.copyOf(arr, arrSize);
return answer;
}
}
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int arrSize = 1;
while (arrSize < arr.length) {
arrSize *= 2;
}
int[] answer = Arrays.copyOf(arr, arrSize);
return answer;
}
}
1. answer 배열의 크기를 구한다
- arr배열크기 < answer배열의 크기 < 최소한의 2의 거듭제곱
2. answe배열의 크기만큼 arr배열을 복사한다
- arr 원소를 차례로 복사하고, 뒤에 남는 원소들은 0으로 초기화
거듭제곱 키워드를 보자마자 Math.pow() 메서드를 떠올려서 풀었는데 이후에 다른 사람풀이를 보니 굳이 pow() 사용하지 않고도 * 연산자만으로 크기를 구할 수 있었다.
JAVA Math클래스
- pow() 메서드
- public static double pow(double a, double b)
- a^b : 밑 값 a를 지수 값 b만큼 제곱 해서 반환
- 지수 값(b)이 음수 일 때, 1/a^b 반환
- 지수 값(b)이 0일 때, 밑(a)이 0이 아니라면 결과는 항상 1 반환
- 지수 값(b), 밑(a) 모두 0 이면 NaN(Not a Number) 반환
JAVA Arrays클래스
- copyOf() 메서드
- public static int[] copyOf(int[] original, int newLength)
- 복사할 원본 배열(original)을 새배열의 길이(newLength)만큼 복사
- 깊은 복사로 배열의 값이 변경이 있어도 서로 영향을 주지 않음
- 새배열의 길이가 원본 배열 길이보다 작으면 길이 이후는 잘려서 반환
- 새별열의 길이가 원본 배열 길이보다 크면 원본 배열 내용을 포함하고 이후 요소들은 기본값(int의 경우 0)으로 채워짐
- sort() 메서드
- public static int[] sort(int[] arr)
- 배열(arr)을 오름차순 정렬
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 17 문자열 (0) | 2024.08.10 |
---|---|
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 15 리스트(배열), 문자열 (0) | 2024.08.07 |
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 14 리스트(배열) (0) | 2024.08.04 |
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 9 문자열 (0) | 2024.07.25 |
[프로그래머스 : JAVA] 코딩 기초 트레이닝 Day 8 조건문, 문자열 (4) | 2024.07.25 |