Notice
Recent Posts
Recent Comments
Link
투케이2K
20. (TWOK/ALGORITHM) [Java] K번째수 - 이차원 배열 (다차원 배열) , Arrays copyOfRange 배열 복사 본문
투케이2K 알고리즘
20. (TWOK/ALGORITHM) [Java] K번째수 - 이차원 배열 (다차원 배열) , Arrays copyOfRange 배열 복사
투케이2K 2022. 7. 14. 08:02[환경 설정 및 설명]
언 어 : Java
설 명 : K번째수 - 이차원 배열 (다차원 배열) , Arrays copyOfRange 배열 복사
[소스 코드]
package ex5;
import java.util.Arrays;
public class MainActivity22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[Program Start]");
System.out.println("");
/**
* [K번째수]
* 1. 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다
* 2. 전체 배열이 [1, 5, 2, 6, 3, 7, 4] 경우 >> [2, 5, 3] 조건 시 >> 2번째부터 5번째까지 (5, 2, 6, 3) 자르고 >>
* 오름차순 (작은) 정렬 후 (2, 3, 5, 6) >> 3번째 값을 출력
* 3. 입출력 예 :
* array : [1, 5, 2, 6, 3, 7, 4]
* commands : [[2, 5, 3], [4, 4, 1], [1, 7, 3]]
* return : [5, 6, 3]
* */
// 초기 배열 변수 선언 실시
int total_arr[] = {1, 5, 2, 6, 3, 7, 4};
int cmd_arr[][] = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}}; //3행 3열
// 결과 출력 메소드 호출 실시
System.out.println("결과 : " + Arrays.toString(solution(total_arr, cmd_arr)));
}// 메인 종료
public static int[] solution(int t[], int c[][]) {
// 결과를 반환할 배열 선언
int result[] = new int[c.length]; //인풋으로 들어온 커맨드 길이만 큼 결과를 리턴해야한다
// 인풋으로 들어온 데이터 확인 실시
System.out.println("total_arr : " + Arrays.toString(t)); // Arrays.toString 1차원 배열 데이터 출력
System.out.println("cmd_arr : " + Arrays.deepToString(c)); // Arrays.deepToString 2차원 배열 데이터 출력
System.out.println("");
// 반복문을 수행하면서 데이터 확인 실시
for (int i=0; i<c.length; i++) {
/**
* [배열 번지 및 Arrays.copyOfRange 설명]
* 1. 인풋으로 들어온 이차원 배열 번지 설명 (3행 3열 구성)
* [2 (0,0), 5 (0,1), 3 (0,2)]
* [4 (1,0), 4 (1,1), 1 (1,2)]
* [1 (2,0), 7 (2,1), 3 (2,2)]
* 2. Arrays.copyOfRange(원본배열, 시작인덱스, 종료 인덱스) : 배열을 복사합니다
* 3. 로직 : 각 배열 start, end, select 번지에 해당되는 값을 출력 >> 배열 복사 >> 정렬 >> 데이터 추출
* */
// 각 start , end, select 값 출력 실시
int startIdx = c[i][0]; // 2, 4, 3
int endIdx = c[i][1]; // 5, 4, 7
int selectIdx = c[i][2]; // 3, 1, 3
System.out.println("start idx : " + startIdx);
System.out.println("end idx : " + endIdx);
System.out.println("select idx : " + selectIdx);
// 출력된 값으로 배열 복사 실시
// 원본 : [1, 5, 2, 6, 3, 7, 4]
// 조건 [2, 5, 3] : [5, 2, 6, 3] 뽑혀야합니다
// 조건 [4, 4, 1] : [6] 뽑혀야합니다
// 조건 [1, 7, 3] : [1, 5, 2, 6, 3, 7, 4] 뽑혀야합니다
int copy[] = Arrays.copyOfRange(t, startIdx-1, endIdx); //배열은 0번지부터 시작하므로 -1을 수행해야합니다
System.out.println("배열 복사 : " + Arrays.toString(copy));
// 배열 데이터 정렬 실시
Arrays.sort(copy);
System.out.println("배열 정렬 : " + Arrays.toString(copy));
// selectIdx 사용해 정렬된 데이터에서 특정 값 출력
System.out.println("특정 값 : " + copy[selectIdx-1]); //배열은 0번지부터 시작하므로 -1을 수행해야합니다
System.out.println("");
// 마지막으로, 반환 배열에 데이터 삽입 실시
result[i] = copy[selectIdx-1];
}
// 결과 반환 실시
return result;
}
}// 클래스 종료
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
22. (TWOK/ALGORITHM) [Java] 숫자 문자열과 영단어 - for문 , replaceAll , array 매칭 (0) | 2022.07.14 |
---|---|
21. (TWOK/ALGORITHM) [Java] 멀쩡한 사각형 - 최대 공약수 , 최소 공배수 (0) | 2022.07.14 |
19. (TWOK/ALGORITHM) [Java] 완주하지 못한 선수 - hashmap 해쉬맵 사용 (0) | 2022.07.14 |
18. (TWOK/ALGORITHM) [Java] 키패드 누르기 - 좌표 값 확인 (0) | 2022.07.14 |
17. (TWOK/ALGORITHM) [Java] 특정 문자열 포함 여부 및 개수 확인 하기 - contains, charAt, substring 사용 (0) | 2022.07.13 |
Comments