제 아이디는 딱봐도 cocciri입니다.
자바로 60ms 걸린 코드가 제 코드 뿐이라 글을 써봅니다.ㅎ
자랑하는 거 아니구 빠르고 효율적인 코드를 공유하면 아마 코테를 준비하고 계실 여러분들도 알고 좋으니까용~~~ 헤헤
백준 문제 1등 별것도 아닌데여~~~
뭐 1등이 얼마나 대단한 거라구 글을 올리겠어요~~~
누가 보면 1등 처음 한 줄 알겠네~~~
ㅋㅋㅋ
그럼 이제 어떻게 1등! 했는지 알려드리도록 하겠습니당~!
히히!
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int min = Integer.MAX_VALUE;
int sum = 0;
int a = 0;
for (int i =0; i<7; i++){
a = Integer.parseInt(br.readLine());
if(a%2==1){
sum+=a;
if (a<=min) min = a;
}
}
if (sum>0) {
System.out.println(sum);
System.out.println(min);
}
else System.out.println(-1);
}
}
다른 분들이 푸신 정답코드와 비교 분석해봤는데요!
어려운 문제가 아니다보니 대부분의 코드 이 비슷했지만, 한 가지 흥미로운 차이점을 발견할 수 있었습니다!
바로 MIN을 초기화할 때 사용하는 값의 차이입니다!
대부분의 코드에서 MIN 값을 초기화할 때 100과 같이 특정한 큰 수로 지정하는 것을 확인할 수 있었습니다.
저는 Integer.MAX_VALUE를 사용했는데요. 이는 정수형 최대값을 나타내는 상수입니다. 자바의 int는 32비트 정수로, 이 타입이 표현할 수 있는 가장 큰 값은 2,147,483,647입니다.
위에서 말했듯이 Integer.MAX_VALUE는 자바에서 정의된 상수이기 때문에 컴파일 시점에 그 값이 이미 고정되어 있고, 메모리에 미리 저장되어 있기 때문에 조회만으로 바로 사용할 수 있습니다.
즉, 추가 연산이나 함수 호출이 필요 없고, 그 값을 바로 사용할 수 있기 때문에 매우 빠릅니다.
또한, Math.min() 메서드를 사용하여 최소값을 찾는 방식을 사용하는 것을 발견할 수 있었는데요. Math.min()은 두 숫자를 비교해서 더 작은 값을 반환하는 함수로, 내부적으로 비교 연산(a > b ? b : a)을 수행합니다.
이 과정에서 함수 호출이 발생하고, 함수로 전달된 인수들이 비교되는 추가적인 연산이 필요합니다.
함수 호출 시에는 스택 프레임이 생성되고, 연산이 이루어지기 때문에 상수를 단순히 참조하는 것보다 시간이 더 걸립니다.
즉, 최소값을 갱신할 때마다 Math.min()을 사용하면 불필요한 함수 호출로 인해 성능이 저하될 수 있습니다.
따라서 함수 호출만으로 시간 차이가 나기 때문에 불필요한 함수 호출을 하는 것보다 최소값을 갱신하는 로직을 좀 더 간결하게 처리하는 것이 낫습니다!
결론적으로, 작은 차이 같아 보이지만, 함수 호출의 빈도와 연산의 단순화가 코드의 성능에 영향을 미친다는 것을 이번 코드 비교를 통해 알게 되었습니다.
특히, 코딩 테스트와 같은 상황에서는 불필요한 연산을 줄이는 것이 성공적인 해결의 중요한 요소임을 다시 한번 깨달았습니다!
남은 기간도 화이팅 해보겠습니다!
'코딩 테스트 일지 📒' 카테고리의 다른 글
[백준] 3460 이진수 | 구현, 수학 | 브론즈 Ⅲ | JAVA 💡25%에 틀렸습니다. 완벽 해결법 + 1등하는 법 (0) | 2024.09.24 |
---|---|
[코테/JAVA] 효율적인 출력 방법: 언제 BufferedWriter, 언제 System.out.print, 언제 StringBuilder? (0) | 2024.09.23 |
[코테/JAVA] 문자, 문자열 다루기 완벽 가이드: 이 글 하나로 한번에 끝내자! 🔥 (9) | 2024.09.22 |
[코테/JAVA] 배열 & 리스트 완벽 가이드: 이 글 하나로 한번에 끝내자 🔥 (1) | 2024.09.21 |
[백준] 2439 별 찍기 - 2 | 구현 | 브론즈 Ⅳ | JAVA 💡조건문 대체 (1) | 2024.09.16 |