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를 참조한다. 즉 참조값이 같아서 같은 배열로 인식을 하므로 틀렸다고 나왔다. 분명 깊은 복사와 얕은 복사에 대해 배우긴 했지만 그냥 그러려니 배웠었는데 이번에 문제 풀면서 다시 한번 보게 되는 시간이었다.
자바 기본이 중요하다는 건 알고 있었지만 아무것도 몰랐을 당시엔 그냥 흘려들었었는데 언제 한번 제대로 자바 기초에 대해 다시 공부를 해야겠다는 생각이 들었다
반응형
'개발 > 코테 준비' 카테고리의 다른 글
자바 백준 2908 - 상수 (0) | 2021.10.10 |
---|---|
자바 백준 1152 - 단어의 개수 (0) | 2021.10.10 |
자바 백준 2675 - 문자열 반복 (0) | 2021.10.05 |
[자바] 프로그래머스 1단계 - 평균 구하기 (0) | 2021.03.02 |
[자바] 프로그래머스 1단계 - 짝수와 홀수 (0) | 2021.03.02 |
댓글