inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

C++알고리즘 교안

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

해결된 질문

327

이종현

작성한 질문수 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

27

2

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

0

30

2

5-S 테스트 케이스 질문

0

34

2

코살 문제풀이 환경

0

46

2

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

0

43

1

추천 추가문제들

0

43

2

프로그래머스 코테 환경 관련해서 질문드립니다.

0

45

2

해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.

0

40

2

균형 이진 트리 설명 시 높이 숫자

0

30

2

4-H 질문드립니다.

0

35

2

1-K 질문드립니다.

0

41

2

대기업 인적성 시험 질문

0

41

2

4-C 질문드립니다

0

41

2

[수학숙제 / BOJ 2870] 채점 서버 오작동

0

37

1

코테 준비 질문

0

50

1

살구클럽가입 요청드려요

0

39

2

1-I 문제 질문

0

40

2

코딩살구클럽 가입

0

57

2

AI 코딩 도구 사용 시 학습 방법 조언

0

51

2

코딩살구클럽 오류

0

61

2

코살클 [3-F 괄호 추가하기] 프라이빗 9번 제보

0

46

1

코딩살구클럽 테스트 케이스 오류 제보

0

52

2

삼성 코딩테스트

0

64

2

틀린 이유를 못찾겠습니다

0

48

2