일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 삼성 SW 역량테스트
- gcp
- Java
- 자바
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 2018 KAKAO BLIND RECRUITMENT 1차
- 프로그래머스
- 젠킨스
- c++
- 2020 카카오 공채
- CS 스터디
- 백준
- 2018 KAKAO BLIND RECRUITMENT
- 부스트코스
- 2019 카카오 공채
- 카카오 공채
- 2019 KAKAO BLIND RECRUITMENT
- 2018 카카오
- 2020 KAKAO BLIND RECRUITMENT
- bfs
- dfs
- Baekjoon
- 삼성 SW 기출문제
- 알고리즘
- map
- 비트마스크
- set
- 카카오
- 2018 카카오 공채
- gradle
Archives
- Today
- Total
아무코딩
[2019 카카오 개발자 겨울 인턴십 코딩테스트] 문제3. 불량 사용자 본문
문제풀이
범위가 작아 완탐이 가능한 문제입니다.
dfs를 사용하였고
문제에
제재 아이디 목록들을 구했을 때 아이디들이 나열된 순서와 관계없이 아이디 목록의 내용이 동일하다면 같은 것으로 처리하여 하나로 세면 됩니다.
라는 부분을 보고 중복방지와 순서가 필요없다는 부분에서 set이 생각나 set을 사용하였습니다. 아이디 목록도 set
그 목록자체의 목록도 set으로 구성하여 이중 set을 사용하였습니다.
소스코드
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#include <string>
#include <vector>
#include <set>
using namespace std;
int cnt = 0;
set<set<string>> comp;
bool compareCheck(string s1, string s2) {
return false;
if (s1[i] == s2[i] || s2[i] == '*')
continue;
else {
return false;
}
}
return true;
}
void dfs(int idx, set<string> check_set, vector<vector<string>> candidate_list) {
if (idx == candidate_list.size()) {
if (check_set.size() == candidate_list.size()) {
for (auto iter = comp.begin(); iter != comp.end(); iter++) {
if (*iter == check_set)
return;
}
cnt++;
}
return;
}
for (int i = 0; i < candidate_list[idx].size(); i++) {
dfs(idx + 1, check_set, candidate_list);
}
}
}
int solution(vector<string> user_id, vector<string> banned_id) {
vector<vector<string>> candidate_list;
for (int i = 0; i < banned_id.size(); i++) {
vector<string> temp;
for (int j = 0; j < user_id.size(); j++) {
if (compareCheck(user_id[j], banned_id[i])) {
temp.push_back(user_id[j]);
}
}
candidate_list.push_back(temp);
}
set<string> chk;
dfs(0, chk, candidate_list);
return cnt;
}
|
문제링크 : https://programmers.co.kr/learn/courses/30/lessons/64064
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[2019 카카오 개발자 겨울 인턴십 코딩테스트] 문제5. 징검다리 건너기 (0) | 2020.04.03 |
---|---|
[2019 카카오 개발자 겨울 인턴십 코딩테스트] 문제4. 호텔 방 배정 (0) | 2020.04.03 |
[2019 카카오 개발자 겨울 인턴십 코딩테스트] 문제2. 튜플 (0) | 2020.04.03 |
[2019 카카오 개발자 겨울 인턴십 코딩테스트] 문제1. 크레인 인형뽑기 게임 (0) | 2020.04.03 |
[2019 KAKAO BLIND RECRUITMENT] 블록 게임 (0) | 2020.04.01 |
Comments