프로그래머스[초급]
문제는 1개의 배열과, 1개의 2차원 배열이 주어지며,
2차원배열에서는 { {i,j,k},{4,7,5}, {1,6,4} }; 다음과 같이 숫자가 주어지며,
array의 i번쨰 부터 j 번재까지를 새로운 배열로 생성 후 정렬한다음에 k번째 가 무엇인지
리턴하시요.
나의 풀이 방법으로는 ..
1. 우선 리턴되야 하는 answer의 배열의 크기는 commands의 길이와 같으므로 answer의 크기를 commands의 길이로 설정했다.
2. array배열의 i ~ j 까지 요소를 담을 sort를 선언하고
3. num , check 를 선언하여 sort의 배열요소를 하나씩 저장할떄 사용하고, answer에 k번쨰를 담을때 사용하였다.
4. commands는 2차원 배열로 향상된 for문을 통해서 1차원 배열 들을 하나씩 꺼내서 i, j, k 번째 값을 사용하였다.
5. num은 one[]의 요소들이 한번씩 돌때마다 0으로 초기화 시켜주었다.
6.sort[] 의경우 commands의 시작~끝 까지의 숫자의 차보다 +1 만큼의 크기로 향상된 for문 안에서 선언하여 one[] 의 요소가 달라질떄마다 다른 크기의 배열이 생성되도록 하였다.
============================================================================================
여기서 의문점이 들었던것 중에 하나가
코드를 직접 내가 다 만들어서 사용하는게 좋은 풀이 방법인지.. 아니면 정의되어 있는 함수를 사용해서 풀이하는게 좋은건지 모르겠다.
다른 사람의 풀이를 보면 copyOfRange 라는 함수를 사용하였는데 딱 문제의 처음보고나서
array 배열을 i~j번쨰 까지 짤라주는 함수가 없나 했더니 있었다.. 짜르다기 보다 i~j까지 복사해주는 함수지만 말이다.
Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
Arrays.copyOfRange(array[], int from, int to);
array[] 배열을 from 숫자부터 to 숫자 전까지 복사해서 새로운 배열로 리턴해준다.,
'Algorithm' 카테고리의 다른 글
[Algorithm] 체육복 (0) | 2022.06.03 |
---|---|
[Algorithm] 가장 점수가 높은 사람을 리턴 하라 (0) | 2022.06.02 |
[Algorithm] 완주하지 못한 선수 (0) | 2022.05.31 |
[Algorithm/Lamda] 함수형 인터페이스 (0) | 2022.05.28 |
[Algorithm/Lamda] Lamda식에 대해 공부해보자 (0) | 2022.05.28 |