inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

C++알고리즘 교안

알고리즘 교안 103페이지 map 사용시 주의점

해결된 질문

340

이종현

작성한 질문수 19

0

103p 앞부분 설명에서,

'다만 앞의 코드는 문제에서 해당 키값에 0이 아닌 값이 들어갈 때 활용이 가능합니다. 만약 문제에서 키에 0이 들어가는 경우 앞의 코드는 활용이 불가능합니다.
예를 들어 문제에서 {0, : 주홍철}, {1, 역사} 이렇게 담는다면 불가능하고, {1 : 주홍철} , {2, 역사} 이렇게 담는다면 해당 로직에 사용가능합니다.'

부분이 잘 이해가 가지 않습니다..

왜 {0, : 주홍철}, {1, 역사} 이렇게는 불가능한 것이고 {1 : 주홍철} , {2, 역사} 이렇게면 가능한 것인가요?
102p 코드 예시는 map<int, int>인데 103p 설명 예시는 map<int,string>인 경우에서 다시 설명해주신 것 같은데 잘 이해가 가지 않습니다 ..

c++ 코딩-테스트

답변 3

1

큰돌

안녕하세요 종현님ㅎㅎ

예를 들어 문제에서 {0, : 주홍철}, {1, 역사} 이렇게 담는다면 불가능하고, {1 : 주홍철} , {2, 역사} 이렇게 담는다면 해당 로직에 사용가능합니다. 

이미 if문 안에 mp[1] == 0을 해버린 순간 이미 mp[1] = 0이 할당되어버리기 때문이죠. 


이 부분 말씀하시는거죠?

이부분 설명을 제가 잘못한 거 같습니다 key가 아니라 value에 들어가는 값이 0이 되면 안되는데 해당 부분 설명이 잘못되어있네요.

다시 설명하자면 다음과 같습니다.

 

다만 앞의 코드는 문제에서 해당 키에 0이 아닌 값이 들어갈 때 활용이 가능합니다.  

이미 if문 안에 mp[1] == 0을 해버린 순간 mp[1] = 0이 할당되어버리기 때문입니다. 


image

해당부분은 교안에 반영될 예정입니다.

또 이해 안 되시면 말씀해주시면 다시 답변 드리겠습니다.

감사합니다.

0

이종현

find 메서드로 해결을 했지만 원리에 대해 이해하고 싶어서 질문드립니다!

0

이종현

int N;

string ret;

map<char, int> m;

int main() {

cin >> N;

for(int i = 0; i < N; i++) {

string s;

cin >> s;

if (m[s[0]] != 0) {

m[s[0]] += 1;

} else {

m.insert({s[0], 1});

}

}

for(auto it : m) cout << "it.first: "<< it.first << " it.second " << it.second << '\n';

}
혹시 해당 코드에서도 it.second가 항상 0인데 위 질문 개념에 근거한 이유일까요?
저는 if (m[s[0]] != 0)에서 s[0]와 동일한 key에 접근해서 해당 키의 value가 0이 아니라면 해당 value에 += 1을 해주려고 하는데 디버깅해보면 insert된 후 value들에 0이 계속 할당되는 것 같더라구요 ㅜ

1

큰돌

mp[0] 이런식으로 참조를 하게 되는 순간 0이 생겨버리게 됩니다.

예를 들어 if(mp[0]) 을 하기만 해도.

mp[0] = 0으로 할당되게 됩니다. 그래서 value에 0이 들어가는 로직에는 사용할 수 없습니다.

map에 ~~한 요소가 있는지를 확인하고 어떠한 로직을 구축하고 싶은데 참조하는 순간 0이 들어가니까요.

 

코딩 살구클럽 가입 문의

0

36

2

코딩살구클럽 가입문의

0

56

2

3-K private case 질문

0

56

2

안녕하세요. 코딩살구클럽 문의드립니다!

0

70

2

7:41 듣다가 질문합니다

0

63

2

코드 리뷰 요청드립니다!

0

65

2

코딩살구클럽 계정 문의

0

68

2

SK하이닉스 대비 강의수강

0

198

3

코딩살구클럽 등록부탁드립니다.

0

67

2

7-F 재귀로 풀시 런타임애러

0

63

1

1-N 문제 질문입니다. (+ 채점오류)

0

72

2

코딩살구클럽 가입 확인 부탁드립니다.

0

81

2

직장인 코테 합격 공부방법 문의

0

110

2

코딩살구클럽 가입 방법

0

90

2

6-H 체점 관련 질문

0

70

1

채점서버 연결 관련 질문입니다

0

99

2

삼성 s직군

0

84

1

삼성 코테 없어짐

0

194

1

코딩살구클럽 가입부탁드립니다

0

85

2

코딩살구클럽 가입 요청 확인부탁드립니다

0

66

2

5-S 테스트 케이스 질문

0

69

2

코살 문제풀이 환경

0

84

2

2 - T 오큰수 문제가 있는 것 같습니다.

0

74

1

추천 추가문제들

0

69

2