인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

mch4737006777's profile image
mch4737006777

asked

10-Week C++ Coding Test | Algorithm Coding Test

6-C

6-C 질문있습니다

Written on

·

45

0

http://boj.kr/bd886da1402c420f8b5d6e75d1cdf360

 

혹시 반례 부탁드려도 될까요?

반례를 구한다면 어떤 방식으로 반례 값을 설정할지도 궁금합니다

c++코딩-테스트

Answer 2

0

kundol님의 프로필 이미지
kundol
Instructor

안녕하세요 mch님 ㅎㅎ

전반적으로 잘 짜셨네요 ㅎㅎ

다만,

	lo =*max_element(arr, arr + n);
	hi = accumulate(arr, arr + n, 0); 
        ret = hi;

이부분을 이렇게 고치셔야 합니다.

lo를 0으로 설정했는데 이를 최대값으로 설정해야 합니다.

 

예를 들어 물건자체가 400원이고 출금금액이 200원이라고 가정했을 때

이 로직이 작동되면 안됩니다.

		{
			sum = arr[i];
			++cnt;
		}

이 로직은 돈이 부족하면 -> 인출을 하면 살 수 있다.

가 깔린 로직인데 인출금액자체가 0부터 시작해버리면 해당 경우의 수가 생겨서 로직자체가 틀려버리게 됩니다.


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


 

0

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

알고리즘 문제를 풀면서 반례를 찾는 것은 중요한 요소이며, 문제 해결 능력을 키우는 데 도움이 됩니다. 반례를 찾기 위한 접근 방식에 대해 간단히 설명드리겠습니다.

  1. 엣지 케이스 고려하기:

    • 입력의 최소값이나 최대값을 활용하여 테스트하세요. 예를 들어, 배열의 길이가 0일 때, 특정 기능이 어떻게 작동하는지 확인합니다.
    • 요소들이 모두 동일하거나 모두 다를 때의 작동을 확인해 볼 수 있습니다.
  2. 패턴 탐색하기:

    • 특정 규칙에 따라 동작하는지 확인하기 위해 패턴을 가진 값을 설정해 봅니다. 예를 들어, 정렬된 입력이나 특정 반복을 가지는 입력 등을 사용할 수 있습니다.
  3. 논리적인 부분 검토:

    • 수학적 논리가 깨질 수 있는 부분은 없는지, 특별한 조건이 필요한지에 대해 다시 한번 추론해 봅니다.

반례를 보다 효과적으로 파악하기 위해 유사한 문제 및 케이스를 검토해 보세요. 몇 가지 관련 링크를 제공드립니다:

  1. 1-K 질문입니다!: 이 링크에서 문제 해결을 위한 다양한 반례를 찾아보실 수 있습니다. 문자열이나 조합 문제에서 유용한 정보가 많습니다.

  2. 1-J 반례: 경우의 수를 계산하는 문제에 대한 설명이 포함되어 있습니다. 어떻게 지나칠 수 있는 반례를 체크할 수 있는지 학습해 보세요.

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

mch4737006777's profile image
mch4737006777

asked

Ask a question