인프런 커뮤니티 질문&답변

AA66님의 프로필 이미지
AA66

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3-A

3-A 질문 있습니다.

작성

·

39

0

저도 min함수를 떠올려서 비교하기위해서는 result를 적당한 값으로 초기화를 해놔야된다고 생각하였는데 강사님께서는 987654321으로 초기화를 해두었던데 그렇게 하신 이유가 있으실까요?

제가 문제를 풀다보니 초기값을 잘못 고르면 마이너스 값으로 출력되어버릴때도 있던데 어떻게 초기값 기준을 잡으면 되는지 잘 감이 잡히지 않습니다. 명확하게 딱 떨어지는 값도 이 문제에서는 없어 보이고요..

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

초기값 기준을 잡으면 되는지 잘 감이 잡히지 않습니다.

>> 문제에서 최솟값을 구하라 -> 최댓값부터 초기화를 하면 되고 그 반대는 최솟값부터 하시면 됩니다.

또한 초기값이 될 수 있는 범위는 문제에서 발생할 수 있는 값 이외로 잡으시면 됩니다.

 

그러나 보통은 int 타입의 문제 -> 최댓값 설정해야 한다면 다음 처럼 설정했을 때 대부분은 통과합니다.

이부분은 교안설명도 참고부탁드립니다.

스크린샷 2024-08-22 오전 9.18.06.png

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

AA66님께서 질문하신 내용은 알고리즘 문제 해결에서 매우 중요한 부분인 ‘적절한 초기값 설정’에 대한 것입니다. 특히 최솟값을 찾는 문제에서 초기값을 어떻게 설정하느냐가 문제의 정답을 올바르게 도출하는 데 결정적인 역할을 합니다.

강사님께서 사용하신 987654321 같은 값은 문제에서 가능한 최댓값보다 큰 값을 초기값으로 설정한 예시입니다. 이런 방식의 초기값 설정은 문제의 조건을 만족하는 실제 값이 어떤 경우라도 초기값보다는 작게 나오도록 보장하기 위함입니다. 이렇게 하면 결과값을 업데이트할 때, 문제의 조건(여기서는 최솟값)에 보다 쉽게 접근할 수 있습니다.

초기값을 설정할 때 고려해야 할 포인트는 다음과 같습니다:

  1. 문제의 범위: 문제에서 주어진 데이터 범위를 확실히 파악하고, 그보다 크거나 작은 값을 초기값으로 설정합니다.
  2. 예외 상황 고려: 실제 문제에서 발생할 수 있는 최악의 경우(예를 들어 최댓값 찾기에서는 가장 작은 값, 최솟값 찾기에는 무한에 가까운 큰 수)를 초기값으로 설정합니다.
  3. 자료형의 한계: 변수의 자료형이 표현할 수 있는 값의 범위 내에서 초기값을 설정해야 합니다. 예를 들어 int 형 변수에 너무 큰 수를 초기값으로 설정하면 오버플로가 발생할 수 있습니다.

질문하신 내용에 직접 답변하기는 어려우나, 이와 유사한 문제에 대한 이전 질문이 있어서 관련 내용을 참고하시면 도움이 될 것 같습니다. 아래 링크는 최댓값 또는 최솟값을 찾을 때 초기값 설정에 대한 질문입니다:

  • 1-G 질문드립니다 - 이 답변에서는 초기값 설정의 중요성과 함께 특정 문제에 대한 반례를 제공하고 있습니다. 비록 다른 문제에 대한 질문이지만, 초기값 설정과 관련된 공통된 원칙을 이해하는 데 도움이 될 수 있습니다.

초기값을 설정하는 것은 문제의 조건과 범위, 자료형의 한계를 종합적으로 고려하여 결정해야 합니다. 따라서 각각의 문제 상황에 맞는 최적의 초기값을 찾는 것이 해결책이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

AA66님의 프로필 이미지
AA66

작성한 질문수

질문하기