。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★/나의 코딩테스트
[프로그래머스/Java] 코딩테스트 Lv.0 배열 자르기
yeonee 여니
2023. 7. 29. 16:24
728x90
반응형
SMALL
안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
yeonee 블로그 : 네이버 블로그
예쁘고 맛있게 먹고 건강하게,강인하지만 온화하게 행하라. ※맛스타운스타일상 인스타 www.instagram.com/s2._.y25n ※맛집감성일상 유튜브https://youtube.com/channel/@S2_yeonee 티스토리https://yeoneeluv.tistory.co
blog.naver.com
🪅 나의 문제 풀이
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = {};
int num1 = i;
int num2 = j;
int[] answer = new int[i,j];
for(int i=0; i<numbers.length; i++){
for(int j=0; j<numbers.length; j++){
}
(1번 방법)int[i,j] numbers = answer;
(2번 방법)Arrays.copyOfRange(numbers, i, j) = answer;
}
return answer;
}
}
첫번째 방법은 배열을 반복문을 통해 numbers의 길이에 따라 나누려고 했었다.
두번째 방법으로는 배열 자르기 코드를 생각해보며 구글링을 하다가 찾아낸 Arrays.copyOfRange를 함께 이용해서 answer을 구해보려고 했는데 한번에 잘 해결되지 않았다.
🧸 코드설명
import java.util.Arrays;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[numbers.length];
answer = Arrays.copyOfRange(numbers, num1, num2 + 1);
return answer;
}
}
- int타입 배열 answer 변수를 numbers 길이만큼 크기를 지정해줍니다.
- Arrays.copyOfrange(복사할 배열, 시작 위치, 배열 크기)를 사용하여 배열을 복사해 answer에 대입합니다.
- num2 + 1을 해준 이유는, num2번째 인덱스까지 출력해야하기 때문에 0번째 인덱스부터 세는 개발에서의 숫자세기의 개념으로 인해 num2 + 1이다.
즉, 범위가 (from,to)인데 from은 <= 이고 to는 < 이거라 +1을 해주어야 to값까지 범위에 들어가기 때문입니다.
조금 더 쉽게 말하자면 from <= Range < to 가 됩니다.
[배열의 복사 방법]
- Arrays.copyOf(원본 배열, 복사할 배열의 길이)
- Arrays.copyOfrange(복사할 원본 배열, from(복사를 시작 인덱스), to(복사를 끝낼 인덱스))
✨ 다른 풀이
풀이1)
풀이2)
for문안에 변수두개 넣을수있는거 처음알았답니다...
풀이3)
살짝 첫번째 방법으로 제가 의도하던 스타일의 정답이었어요!
728x90
반응형
LIST