본문 바로가기
👋국비 후기 모음👋 (이력도 확인 가능!)
개발/코테 준비

자바 백준 2562 - 최댓값 :: 배열 복사(깊은 복사와 얕은 복사)

by 킴뎁 2021. 9. 15.
728x90
반응형

정답!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//최댓값
public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] arr = new int[9];
        int max = 0;
        int cnt = 0;
        for(int i=0; i<9; i++) {
            String a = br.readLine();
            arr[i] = Integer.parseInt(a);
        }
        for(int i=0; i<9; i++) {
            if(arr[i]>max) {
                max = arr[i];
                cnt = i+1;
            }
        }
        System.out.println(max);
        System.out.println(cnt);

    }

}

틀린답!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

//최댓값
public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] arr = new int[9];

        for(int i=0; i<9; i++) {
            String a = br.readLine();
            arr[i] = Integer.parseInt(a);
        }
        int[] arr1 = arr;
        Arrays.sort(arr);
        int[] arr2 = arr;

        System.out.println(arr1[arr1.length-1]);
        for(int i=0; i< arr1.length; i++) {
            if(arr1[i] == arr2[8]) {
                System.out.println(i);
            }
        }

    }

}

틀린답에 대해서 okky.kr에 물어봤다. 알고리즘 공부를 최근에 시작해서 아주 초짜라 이정도도 잘 못 푼다.

틀립답을 보면 정렬 전 배열을 arr1에 담았고 정렬 후 배열을 arr2에 담고 비교해서 풀었더니 틀렸다고 나왔다. 분명 예제 정답과 일치하게 나왔는데 틀렸다고 나오니 도저히 이해가 가지 않아서 질문을 남겼다. 친절히 알려주셨고 그 해설을 분석해보았다.

 

학원 다닐 때 분명 배웠던 내용인데 내가 잘 몰랐다. 배열 복사에 관한 것이다. 배열은 깊은 복사와 얕은 복사가 있는데 내가 한 방식이 얕은 복사였다. 정렬을 하든 안하든 저 방식대로면 arr1이나 arr2나 같이 arr를 참조한다. 즉 참조값이 같아서 같은 배열로 인식을 하므로 틀렸다고 나왔다. 분명 깊은 복사와 얕은 복사에 대해 배우긴 했지만 그냥 그러려니 배웠었는데 이번에 문제 풀면서 다시 한번 보게 되는 시간이었다.

자바 기본이 중요하다는 건 알고 있었지만 아무것도 몰랐을 당시엔 그냥 흘려들었었는데 언제 한번 제대로 자바 기초에 대해 다시 공부를 해야겠다는 생각이 들었다

 

반응형
👋국비 후기 모음👋 (이력도 확인 가능!)

댓글