프로그래머스 [Lv1] | 신고 결과 받기


c++ algorithm] find ( ) 함수 사용법 (tistory.com)
C++ 벡터에 요소가 있는지 확인하는 방법 | Delft Stack
#include <algorithm> 을 추가해 find() 함수를 통해 벡터 안에 해당 문자열이 있는지 검사하려다가 실패했다.
다른 사람들이 이걸 사용했을 것 같으니 좀 따 다른 사람 풀이 봐야겠다
실패 한 후 하찮게 for문으로 벡터 안을 다 돌면서 검사하게끔 했음. 그랬더니 나온 코드
findname()은 string name과 id_list를 매개변수로 받아, 해당 name이 어느 인덱스에 속하는지 return 해주는 함수이다.

첫번째를 예시로 들면 id_list가 ["muzi", "frodo", "apeach", "neo"]인데 "muzi"가 매개변수로 주어지면 0을 return한다.
그리고 list[0]에 "muzi"를 신고한 사람들의 이름이 추가가 될 것이다.
따라서 list[][] 2차원 배열을 사용하여 id_list의 사람을 신고한 사람들이 list[신고당한 사람의 index]에 push_back으로 추가된다.
list를 출력하는 코드도 추가했다.

여기서 출력을 보면 list에 신고한 사람이 잘 추가된 것을 확인할 수 있다.
테스트 1을 보면, muzi (0) 를 신고한 사람은 apeach.
frodo (1)을 신고한 사람은 muzi , apeach.
apeach (2)를 신고한 사람은 없음.
neo (3)를 신고한 사람은 frodo, muzi 다.
그래서 제출했도니

마음을 가다듬고 코드를 읽어봄. 그래도 오늘은 바로 보였다.. 당연한걸 잘못해서 그른지
2번 이상 신고하면 정지되는 걸로 풀었음. k번이라서 케이스마다 다른뎅
그래서 2였던 동그라미 부분을 k로만 바꿔줬다.

그렇게 다시 제출더니

그렇게 완성된 저의 코드는요

남의 풀이도 한번 볼게유
<algorithm>의 find를 쓴 사람은 거의 없었고, <map>과 <set>을 이용한 풀이가 많았다.
들어본적은 있지만 기억은 안남. 공부하자^^
Set, Map
[코테를 위한 압축 개념] C++ STL 맵(map), 셋(set) (tistory.com)
[C++/STL] 셋(Set), 맵(Map) :: 9327144 (tistory.com)
Set
중복된 원소가 존재하지 않음( 집합과 비슷 )
Map
키와 값의 데이터를 보관하는 딕셔너리형 자료구조
중복된 원소를 set과 동일하게 추가할 수 없음.
이렇게 map과 set을 둘 다 조합해서 알맞게 사용한다.
그렇게 푸신 방부포장맨씨의 코드를 볼게유

대박. 그렇구만.
muzi
|
frodo, neo
|
frodo
|
neo
|
apeach
|
muzi, frodo
|
neo
|
|
위 표처럼 자료형을 저장해야하는데, 나는 생각나는게 2차원 배열이라서 그걸 이용함.
근데 map과 set을 이용하면
map<string, set<string>> 을 하면 됐던 것!!