Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백엔드
- 졸리다
- 코린이
- 자바
- 다형성
- 파이팅
- 메서드
- 인스턴스
- 새벽공부
- 문자 단위 스트림
- MPA
- Java
- 예외 처리
- 보조 스트림
- 변수
- 배열
- 코딩
- 자료형
- SSR
- 초보개발자
- exception
- FileInputStream
- 개발자
- node.js
- try-catch
- 바이트 단위 스트림
- ArrayList
- throws
- 상속
- 인터페이스
Archives
- Today
- Total
SHUSTORY
[ 백준 ] 2562번 : 최댓값 본문
728x90
문제
내 풀이 및 코드 리뷰
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[9];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = sc.nextInt();
}
int max = Arrays.stream(intArray).max().getAsInt();
System.out.println(max);
System.out.println(Arrays.asList(intArray).indexOf(max));
}
}
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[9];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = sc.nextInt();
}
int max = Arrays.stream(intArray).max().getAsInt();
System.out.println(max);
System.out.println(Arrays.asList(intArray).indexOf(max));
}
}
- 이렇게 코드를 작성하면 최댓값은 찾을 수 있지만 index 값이 -1이 나온다.
- indexOf( ) 메소드는 String 타입과 List 계열의 타입에서만 사용 가능하다.
- Arrays.asList(intArray)를 사용하여 기본 배열을 리스트로 변환하면, 이 리스트의 indexOf 메소드는 기본 데이터 타입에 대한 boxing이 발생하여 제대로 동작하지 않는다.
int 배열을 Integer 리스트로 변환하는 과정에서 박싱이 발생하면서 배열의 값들이 객체로 변환되기 때문이다.
- 박싱은 기본 데이터 타입 ( int, char, double... )을 해당하는 래퍼 클래스로 변환하는 과정을 말한다.
int ( 기본 데이터 타입 ) - Integer ( 래퍼 클래스 )
char - Character
double - Double
과 같이 기본 타입에서 래퍼 클랙스 객체로 변환하는 것이 박싱,
그 반대로 래퍼 클래스에서 기본 데이터 타입으로 변환하는 것이 언박싱이다. - 위 코드에서 박싱이 발생한 이유가 무엇일까?
자바에서 제네릭 타입이나 컬렉션을 사용할 때, 기본 데이터 타입은 사용할 수 없기 때문이다.
컬렉션은 객체를 다루는 구조이기 때문에 기본 데이터 타입을 직접 사용할 수 없다.
따라서 제네릭 타입의 컬렉션인 List를 사용하기 위해서
기본 데이터 타입의 값들을 객체로 감싸기 위해 박싱이 발생하는 것이다.
- 박싱은 기본 데이터 타입 ( int, char, double... )을 해당하는 래퍼 클래스로 변환하는 과정을 말한다.
수정한 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[9];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = sc.nextInt();
}
int max = intArray[0];
for (int arr:intArray) {
max = (max>arr)? max : arr;
}
int arrayIndex = 0;
for (int i = 0; i < intArray.length; i++) {
if (max == intArray[i]){
arrayIndex = i+1;
}
}
System.out.println(max);
System.out.println(arrayIndex);
sc.close();
}
}
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[9];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = sc.nextInt();
}
int max = intArray[0];
for (int arr:intArray) {
max = (max>arr)? max : arr;
}
int arrayIndex = 0;
for (int i = 0; i < intArray.length; i++) {
if (max == intArray[i]){
arrayIndex = i+1;
}
}
System.out.println(max);
System.out.println(arrayIndex);
sc.close();
}
}
다른 풀이
( 1 )
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[9];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = sc.nextInt();
}
int max = intArray[0];
int count = 0;
int index = 0;
for (int arr:intArray) {
count ++;
if (arr > max){
max = arr;
index = count;
}
}
System.out.println(max + "\n" + index);
sc.close();
}
}
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] intArray = new int[9];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = sc.nextInt();
}
int max = intArray[0];
int count = 0;
int index = 0;
for (int arr:intArray) {
count ++;
if (arr > max){
max = arr;
index = count;
}
}
System.out.println(max + "\n" + index);
sc.close();
}
}
'코딩테스트 > JAVA' 카테고리의 다른 글
[ 백준 ] 27866번 : 문자와 문자열 (0) | 2024.01.23 |
---|---|
[ 백준 ] 3052번 : 나머지 (0) | 2024.01.16 |
[ 백준 ] 10818번 : 최소, 최대 _ JAVA (0) | 2023.12.02 |
[ 백준 ] 10871번 : X보다 작은 수 _ JAVA (1) | 2023.12.02 |
[ 백준 ] 10951번 : A + B - 4 _ JAVA (0) | 2023.12.01 |