[Java] 배열 Examples

Ogu·2022년 9월 28일
0

[Java] 자료구조

목록 보기
1/1

1. int형 배열 오름차순으로 출력

		int[] arr = {5, 3, 1, 4, 6, 1};
        int[] visited = new int[arr.length];
        int visitCnt = 0;
        int minVal = Integer.MAX_VALUE;
        int minIdx = -1;

        while (visitCnt < arr.length) {
            for (int i = 0; i < arr.length; i++) {  // 최솟값 찾기
                if (arr[i] < minVal && visited[i] == 0) {
                    minVal = arr[i];
                    minIdx = i;
                }
            }

            if (minIdx != -1) {
                System.out.print(minVal + " ");
                visited[minIdx] = 1;
                visitCnt++;
            }

            minVal = Integer.MAX_VALUE;
            minIdx = -1;
        }
  1. 방문한 것을 표시할 int[] visited 배열, 방문 개수를 표시하여 while문의 조건으로 사용할 visitCnt, 최솟값의 인덱스와 값을 저장할 minIdx, minVal을 선언한다.

  2. while문은 visitCnt가 arr.length보다 작을때까지 시행한다.

  3. for문을 돌며 최솟값을 찾고 그 값이 방문하지 않은 값이라면 minVal과 minIdx를 설정한다.

  4. 최솟값을 찾은 후 minIdx가 -1이 아니라면(최솟값을 찾았다면) 해당 값을 출력하고 visited[minIDx]++를 하여 방문함을 표시하고, visitCnt++로 방문한 횟수를 count한다.

  5. minVal과 minIdx는 다시 초기화시킨다.


2. 배열에서 중복된 값을 제거한 새 배열 생성

		int[] arr = {1, 5, 3, 2, 2, 3, 1, 4, 1, 2, 3, 5};
        int[] arrResult = new int[arr.length];
        int cnt = 0;

        for (int i = 0; i < arr.length; i++) {
            boolean dupFlag = false;  // 중복된 데이터인지 아닌지 체크할 변수
            for (int j = 0; j < cnt; j++) {
                if (arr[i] == arrResult[j]) {
                    dupFlag = true;
                    break;
                }
            }

            if (dupFlag == false) {
                arrResult[cnt++] = arr[i];
            }
        }

        for (int i = 0; i < cnt; i++) {
            System.out.print(arrResult[i] + " ");
        }
  1. arrResult에 채워진 값의 개수들을 체크할 cnt와 결과 배열 arrResult를 선언한다.

  2. arr배열을 반복문으로 돌며
    2.1. 중복된 데이터인지 아닌지 체크할 변수를 만들고 (boolean dupFlag으로 체크)
    2.2. cnt만큼 arrResult배열을 돌며 중복된 데이터가 있으면 dupFlagtrue로 설정하고 break한다(남은 반복문 돌릴 이유 X).
    2.3. 반복문을 끝까지 돌고도 dupFlag가 false이면 중복된 데이터가 없는 것이므로 arrResult[cnt++]에 arr[i]값을 넣어준다.

profile
私はゲームと日本が好きなBackend Developer志望生のOguです🐤🐤

0개의 댓글