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

Maruche님의 프로필 이미지
Maruche

작성한 질문수

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

4-A

반례가 궁금합니다.

작성

·

221

0

클래식한 방법으로도 풀어보고 싶어서 완전탐색으로만 풀어봤습니다.

http://boj.kr/4a9402fdc35849379ffcb1f72c8c1016

우선 변수명을 대충 지어서 설명 드리자면

v는 2차원벡터로 데이터 저장하고 combi는 조합을 구하는 벡터입니다. 조합을 1개부터 N개까지 다 구하고 check하는 함수로 보내는 로직입니다.

vmin은 영양소 최소값 모아둔 벡터입니다. ans는 식품의 idx를 저장하는 벡터입니다. value는 현재 최저 가격입니다.

check하는 함수에서 value와 price를 비교해서 (이전 최저가격과 현재 측정가격) 같으면 사전순 정렬을 위해 ans와 combi 벡터를 비교해서 바꿔주도록 설정했습니다만.. 80%부분에서 계속 틀려서 답답합니다 ㅠㅠ

답변 1

1

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

안녕하세요 ㅎㅎ

 

Maruche님 코드 정말 잘 짜시네요 ㅎㅎ

반례 찾는데 오래걸렸는데요.

int main()
{
	int N, value = 1e9, tmp;
	vector<int> vmin(4), ans;

이렇게 한번 바꿔보시겠어요?

초기값이 600으로 설정되어있었는데

문제에서 나올 수 있는 최대 가치는 500 * 15입니다.

즉, 1000이 최솟값이 될 수도 있기 때문에

최솟값의 초기값을 그렇게 설정하면 오류가 발생하게 됩니다.

최솟값의 초기값은 항상 문제 범위를 벗어나는 것으로(범위최대 + 1 이상으로) 설정해서 최솟값을 만드셔야 합니다.

 

 


 



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

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

감사합니다.

강사 큰돌 올림.

 

Maruche님의 프로필 이미지
Maruche
질문자

이런 기초적인 실수를..ㅠㅠ 항상 감사합니다!!

Maruche님의 프로필 이미지
Maruche

작성한 질문수

질문하기