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

이효민님의 프로필 이미지
이효민

작성한 질문수

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

4-A

4-A_19942 인덱스 질문

해결된 질문

작성

·

238

0

http://boj.kr/40440de5cbbb48f59125df1e7e30c453

질문 3개가 있습니다.

1.

모든 경우의 수를 찾는 아래의 코드에서 i=0이 아닌 1부터 시작하는 이유는 식재료를 아무것도 고르지 않는 경우의 수는 없기 때문인가요?(최소 1개 이상 식재료를 골라야 하기 때문인가요?) 그러면 그냥 0부터 시작해도 어차피 결과에 영향을 주지는 않으니 그냥 0부터 시작해도 문제는 없겠죠?

for (int i=1; i< (1<<n); i++)

 

  1.  

    map은 key-value 쌍으로 알고 있습니다. 그렇다면 아래 코드에서 ret_v의 형태는 (key, value)쌍 으로 (최소 ret 비용, {{1,2,3}, {2,4,5}})이런식으로 들어가 있는건가요?

map<int, vector<vector<int>>> ret_v;

...

if(b>=mp && c>=mf && d>=ms && e>=mv){

if(ret>=sum){

ret=sum;

ret_v[ret].push_back(v)

 

3.처음에 key를 생성할때 insert로 집어 넣어야하는걸로 알고 있는데 그러면 ret_v[ret].push_back(v)말고 ret_v.insert({ret, {v});이런식으로 넣어도 될까요?

 

답변 1

1

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

안녕하세요 효민님 ㅎㅎ

모든 경우의 수를 찾는 아래의 코드에서 i=0이 아닌 1부터 시작하는 이유는 식재료를 아무것도 고르지 않는 경우의 수는 없기 때문인가요?(최소 1개 이상 식재료를 골라야 하기 때문인가요?) 그러면 그냥 0부터 시작해도 어차피 결과에 영향을 주지는 않으니 그냥 0부터 시작해도 문제는 없겠죠?

>> 네 맞습니다.

 

(최소 ret 비용, {{1,2,3}, {2,4,5}})이런식으로 들어가 있는건가요?

>> 네 맞습니다.

 

처음에 key를 생성할때 insert로 집어 넣어야하는걸로 알고 있는데 그러면 ret_v[ret].push_back(v)말고 ret_v.insert({ret, {v});이런식으로 넣어도 될까요?

>> 네 맞습니다.

방법은 두가지입니다. insert를 하거나 바로 넣어도 됩니다.

예를 들어 이렇게 할 수 있습니다.

#include<bits/stdc++.h>
using namespace std; 
int main(){
    map<int, int> mp; 
    mp.insert({1, 1});
    mp[2] = 1; 
    for(auto it : mp){
        cout << it.first << "\n";
    } 
	return 0;
}

 


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

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

감사합니다.

강사 큰돌 올림.

이효민님의 프로필 이미지
이효민

작성한 질문수

질문하기