강의

멘토링

로드맵

Inflearn brand logo image

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

Jespy님의 프로필 이미지
Jespy

작성한 질문수

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

그리디 알고리즘 [문제풀이] : BOJ 5585

최대값 int(1e6, 1e7, 1e8) 기준

작성

·

43

0

선생님 안녕하세요.

 

최대 혹은 최소값으로 ans를

int(1e6, 1e7, 1e8) 등 다양하게 설정하시는데 혹시 기준이 있을까요?

문제를 풀다 보면 탐색 전에 미리 최소값이나 최대값을 세팅해야 하는 경우가 있는데, 그 세팅의 베스트 프랙티스나 혹은 float(int) 같이 최대/최소값을 따로 정하시는 로직이 후반부에 나오는지 궁금합니다.

답변 2

0

알리 Ally님의 프로필 이미지
알리 Ally
지식공유자

안녕하세요, Jespy님!

강의 후반부에서는 따로 최대값이나 최소값 초기화에 대한 팁이 등장하진 않지만, 최대/최소값은 나올 수 있는 값보다 더 크거나 작게만 설정하면 충분합니다.

 

예를 들어,

  • 최솟값을 구하는 경우에는int(1e9) 또는 float('inf')

  • 최댓값을 구하는 경우에는-int(1e9) 또는 -float('inf')

이렇게 설정해두고 시작하면, 이후 로직에서 min, max를 적용할 때 문제 없이 동작합니다.
정해진 규칙이 있다기보다는, 문제에서 다룰 수 있는 값의 범위를 보고, 그보다 충분히 크거나 작은 값으로 초기화하는 식으로 하면 됩니다.

 

몇 가지 주의할 점

  • float('inf')는 float 타입이라서, 정수 연산 위주인 문제에서는 int(1e9)처럼 정수로 처리하는 게 더 안전합니다.

  • 1e9가 항상 충분한 값은 아닌 경우도 존재할 수 있습니다. 예를 들어 문제에서 수의 범위가 10^12까지 갈 수 있다면, 이보다 더 큰 수인 1e13과 같이 설정해야 합니다.

  • 음수가 나올 수 있는 문제에서 최솟값 = 0으로 초기화하면 최솟값이 제대로 갱신되지 않는 경우가 생길 수 있으니, 이때도 답보다 더 작은 값으로 초기화해야 합니다.

 

결론적으로는, 매번 문제 조건에 따라 적절한 초기값을 설정하는 게 중요하고, 이 부분은 많이 경험해보시면 자연스럽게 감을 잡을 수 있을 거예요! 🙂

 

0

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

Jespy님께서는 알고리즘 문제를 풀 때 초기값으로 int(1e6, 1e7, 1e8) 등 다양한 값을 설정하는 기준에 대해 궁금해 하시는 것 같습니다. 이러한 값들을 설정할 때의 기준과 최선의 실천 방안에 대해 설명드리겠습니다.

초기값 설정 기준

  1. 문제의 최대 범위를 고려: 문제에서 다루는 수의 범위를 파악하는 것이 중요합니다. 예를 들어, 문제에 주어진 수가 최대 1,000,000까지라면, int(1e6)보다 큰 값을 최대값으로 설정하는 것이 합리적입니다.

  2. 자료형의 한계: Python은 정수형의 크기에 제한이 없지만, 일반적으로 C++ 등의 언어에서는 int의 최대값이 약 2,147,483,647로 제한됩니다. Python에서는 이러한 한계를 고려할 필요가 없지만, 다른 언어에서 코드가 동작하도록 할 계획이라면 이러한 자료형의 한계를 이해하고 있어야 합니다.

  3. 기본적인 초기화: 문제를 풀 때 일반적으로 최소값을 찾을 경우에는 가능한 큰 값으로 초기화(예: float('inf')), 최대값을 찾을 경우에는 가능한 작은 값으로 초기화(예: -float('inf'))합니다. 이러한 방법은 float 형으로도 많이 활용됩니다.

최선의 실천 방안

  • 문제의 제약사항 확인: 항상 문제의 제한을 잘 읽고 그에 맞춰 값을 설정하세요.
  • 보다 간단하고 안전한 접근법 사용: float('inf')-float('inf')를 사용하여 가독성을 올리고 초기화 문제를 간단히 해결하세요.

유사한 질문에 대한 기존 답변 링크를 확인하시면 더욱 큰 도움이 될 수 있습니다:

  • “BOJ6603질문있습니다!” - 알고리즘 문제에서 초기값 선택 시 고려해야 할 요소를 상세히 설명한 사례를 확인해 보시기 바랍니다.

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

Jespy님의 프로필 이미지
Jespy

작성한 질문수

질문하기