티스토리 뷰

알고리즘/BOJ

[백준] 14965 Lozinke

세진짱 2018. 6. 25. 23:31

유저가 N명이 있고 각자의 비밀번호가 주어진다

이 때 내 비밀번호가 다른사람의 substring이라면 

나의 비밀번호를 입력해서 그 사람의 계정으로 접속이 가능하다..!


문제는 모든 사람에 대해 본인의 계정을 제외한 접속가능한 다른계정의 수를 모두 찾는 것이다!


set과 map을 이용하면 풀 수 있는 문제지만 결국 못풀었다 ㅎㅎ

쉬운문젠대 왜 생각을 못했을까...! set,map마스터 해야겠다


푸는 방법은 비밀번호를 입력받으며 set에 substring을 다 넣는다

그리고 map에서 substring의 수를 +1해준다

모든 비밀번호에 대해 수행하고 마지막에 그 수를 더하고 n만큼 빼면(본인계정접속 수) 접속 가능한 다른사람계정 수가 나온다


소스코드

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
#include <iostream>
#include <set>
#include <map>
#include <string>
using namespace std;
set<string> s;
set<string>::iterator it;
map<stringint> mp;
string arr[20020];
int main() {
    int n; scanf(" %d"&n);
    for (int i = 0; i < n; i++) {
        string str; cin >> str;
        string sub;
        arr[i] = str;
        s.clear();
 
        int sz = str.size();
        for (int j = 0; j < sz; j++) {
            sub = "";
            for (int k = j; k < sz; k++) {
                sub.push_back(str[k]);
                s.insert(sub);
            }
        }
        for (it = s.begin(); it != s.end(); it++) mp[*it]++;
    }
    int ans = 0;
    for (int i = 0; i < n; i++) ans += mp[arr[i]];
    ans -= n;
    printf("%d\n", ans);
}
cs

'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 13904 과제  (0) 2018.06.27
[백준] 15594 Out of place  (0) 2018.06.26
[백준] 11402 이항계수4  (2) 2018.06.25
[백준] 13977 이항계수와 쿼리  (0) 2018.06.25
[백준] 11964 Fruit Feast  (5) 2018.06.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
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
글 보관함