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

심재학님의 프로필 이미지
심재학

작성한 질문수

38군데 합격 비법, 2024 코딩테스트 필수 알고리즘

1-4. 알고리즘과 친해지기 (1)

1-4 알고리즘과 친해지기 강의에서 풀이 맞는지 확인 좀 부탁드려요~

작성

·

39

0

image.png

위 화면은 강의 내용 일부입니다.

그런데 주석에 저렇게 설명하셨는데 아래와 같이 진행되는 거 같아서 질문드립니다.

3, 5, 6, 1, 2, 4

3 -> 3, 5, 6, 1, 2, 4

5 -> 3, 5, 6, 1, 2, 4

6 -> 3, 5, 6, 1, 2, 4,

...

이렇게 진행되는게 아닌건가 싶은데.. 확인 좀 부탁드려요.

답변 2

0

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

안녕하세요 재학님! 좋은 질문 남겨주셔서 감사합니다!!

말씀해주신대로 실제 동작은 다음과 같습니다:

  1. number가 3일 때:

    • 전체 배열 [3, 5, 6, 1, 2, 4]와 비교

    • 3 < 5, 3 < 6이므로 is_max_num = False

  2. number가 5일 때:

    • 전체 배열 [3, 5, 6, 1, 2, 4]와 비교

    • 5 < 6이므로 is_max_num = False

  3. number가 6일 때:

    • 전체 배열 [3, 5, 6, 1, 2, 4]와 비교

    • 모든 비교에서 6이 크므로 is_max_num = True 유지

    • 6 반환

말씀하신 것처럼 compare_number는 매번 전체 배열을 순회합니다. 강의의 주석은 "남은 비교 대상"을 표시한 것으로 보이지만, 실제 코드는 매번 전체 배열과 비교하는 방식으로 동작합니다. 따라서 재학님이 이해하신게 맞습니다! 혼동을 드려 죄송합니다 __

0

안녕하세요, 인프런 AI 인턴입니다. 심재학님.

질문해주신 내용은 find_max_num 함수의 동작 방식에 대한 것입니다. 이 함수는 배열에서 최대값을 찾기 위한 방법으로, 각 숫자를 배열의 다른 숫자들과 비교하여 최대값을 결정합니다. 여기서 고려해야 할 중요한 부분은 is_max_num 플래그를 사용하여 현재 숫자가 최대값인지 판단하는 로직입니다.

동작 원리 설명:

  1. 각 숫자에 대해 반복문을 돌아 모든 다른 숫자들과 비교합니다:

    • 초기에는 모든 숫자를 최대값이라고 가정하고 (is_max_num = True) 시작합니다.
    • 다른 어떤 숫자가 더 크다는 것이 확인되면 is_max_numFalse로 설정합니다.
  2. 비교 이후에도 is_max_numTrue로 남아 있는 경우 해당 숫자가 배열의 최대값입니다.

일반적인 구현 과정은 다음과 같습니다:

  • 첫 번째 숫자 3에 대해, 나머지 숫자들과 비교하여 그보다 큰 숫자가 있는 경우 is_max_num = False가 됩니다.
  • 이 과정이 모든 숫자에 대해 반복됩니다.
  • 최종적으로 is_max_num = True인 숫자가 배열의 최대값으로 반환됩니다.

결론적으로, 이 알고리즘은 모든 숫자에 대해 배열 내 나머지 숫자들과의 비교 결과에 따라 최대값을 출력하는 방식입니다. 따라서, 주석에 설명된 대로 동작하지만 고객님이 생각하신 방식과는 약간의 차이가 있을 수 있습니다.

참고하시기 위해 관련된 상세한 강의 및 설명은 다음 링크에서 확인하실 수 있습니다:

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

심재학님의 프로필 이미지
심재학

작성한 질문수

질문하기