본문 바로가기
  • 식초 한잔 할래..?
공부/게임 공부

코딩 실습 경험자 Lv2-6 [Find 최대값 and 최소값]

by 돼지피그푸곰 2025. 9. 3.

 

질문이 간단한 만큼 답도 간단하겠군요.

 

라고 생각하던 찰나

이게 도대체 무슨 일이지요.

 

도와줘 GPT

역시 GPT다

처음의 초기화 부분이 잘못 되었다고 합니다.

 

제가 참고한 블로그에서는 잘 나왔는데

이해가 잘 안되는 부분이었으니 제 나름대로 변형 후 써봤는데, 그게 틀렸다네요. 아직도 모르겠습니다.

 

  • myMin → int.MaxValue (가능한 가장 큰 값)으로 초기화 → 실제 배열 값과 비교하면 무조건 갱신됨
  • myMax → int.MinValue (가능한 가장 작은 값)으로 초기화 → 실제 배열 값과 비교하면 무조건 갱신됨

이게 이 뜻이라는데, 왜 이 뜻이 되는지 아주 미스터리 입니다.  영단어 같은 거겠죠. 이거 이렇게 쓰면 이렇게 된다 하고 외워야 되는 것 같습니다

결국

int myMin = int.MaxValue, myMax = int.MinValue;

.int min = number[0];
int max = number[0];

가 같은 결과가 나왔는데, 무슨 차이일까요.

✅ 특징

  • 최댓값을 구할 때 → int.MinValue로 초기화
  • 최솟값을 구할 때 → int.MaxValue로 초기화
  • 배열이 어떤 값이든 상관없이 무조건 비교 갱신됨
  • 안전하지만, 비교할 때마다 처음에 극단값과 비교해야 해서 약간 직관성이 떨어짐

✅ 특징

  • 배열의 첫 번째 값을 초기값으로 사용
  • 이후 나머지 요소들과만 비교하면서 최솟값/최댓값 갱신
  • 더 직관적이고 깔끔함
  • 하지만, 배열이 비어있으면 오류 발생 (number[0] 접근 불가)

그래서 GPT에게 두 경우를 비교해 달라고 부탁했습니다.

🔎 차이점 정리

구분코드 1 (int.MinValue/MaxValue)코드 2 (첫 번째 원소)
초기화 방식 극단값(int.MaxValue, int.MinValue) 사용 배열의 첫 번째 값 사용
안정성 배열이 비어 있어도 초기화 가능 (단, 루프 안이 실행 안 됨) 배열이 비어 있으면 IndexOutOfRangeException 발생
직관성 비교할 때 "의미 없는 큰/작은 값"과 먼저 비교해야 해서 덜 직관적 배열 안 값으로 바로 시작 → 직관적
추천 상황 배열이 비어 있을 수도 있는 경우 배열이 반드시 1개 이상 값이 있는 경우

 

코드1 은 최대값과 최소값을 그때 그때 비교하는거고, 코드2는 배열의 첫 번째 값을 초기값으로 사용한다고 합니다.

 

신기하게 장단점이 있네요.