๐Ÿ’ป

[๋ฐฑ์ค€] ์ž๋ฃŒ๊ตฌ์กฐ - ์ฒ ๋ฒฝ ๋ณด์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ์ž๋ฃŒ๊ตฌ์กฐ - ์ฒ ๋ฒฝ ๋ณด์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋˜ํšจ๋‹ˆ 2020. 3. 18. 00:39

๋ฌธ์ œ

์†Œํฌ๋Š” ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค ํ•œ ์Œ์œผ๋กœ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ถˆํŽธํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์†Œํฌ๋Š” ๊ณต๊ฐœํ‚ค๋งŒ์„ ์ด์šฉํ•˜๋Š” ์•”ํ˜ธํ™” ์ฒด๊ณ„๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ด๋ฅผ "์ฒ ๋ฒฝ ๋ณด์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜"์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ•œ ๋‹จ์–ด๋Š” 1~10๊ฐœ์˜ ๋Œ€๋ฌธ์ž(A-Z)๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ด๋‹ค. ํ•œ ๋ฌธ์žฅ์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‹จ์–ด๋“ค๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค.

์ œ 1 ๊ณต๊ฐœํ‚ค๋Š” ์ตœ๋Œ€ ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ๋œ ๋‹จ์–ด๋“ค๋กœ ๋˜์–ด์žˆ๋‹ค.

์ œ 2 ๊ณต๊ฐœํ‚ค๋Š” ์ œ 1 ๊ณต๊ฐœํ‚ค์˜ ๋‹จ์–ด๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„๋‹ค.

ํ‰๋ฌธ(์•”ํ˜ธํ™” ๋˜์ง€ ์•Š์€ ๋ฌธ์žฅ)์€ ์ œ 1 ๊ณต๊ฐœํ‚ค์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋‹จ์–ด๋“ค๋กœ ๋˜์–ด์žˆ์ง€๋งŒ, ์ œ 1 ๊ณต๊ฐœํ‚ค์™€ ๋‹ค๋ฅด๊ฒŒ ๊ฐ ๋‹จ์–ด๋“ค์€ ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์•”ํ˜ธ๋ฌธ(์•”ํ˜ธํ™” ๋œ ๋ฌธ์žฅ)์€ ํ‰๋ฌธ์„ ์ œ 2 ๊ณต๊ฐœํ‚ค๋ฅผ ๋งŒ๋“  ๊ทœ์น™์˜ ๋ฐ˜๋Œ€๋กœ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„๋‹ค.

์ฃผ์–ด์ง„ 2๊ฐœ์˜ ๊ณต๊ฐœํ‚ค์™€ ์•”ํ˜ธ๋ฌธ์œผ๋กœ ํ‰๋ฌธ์„ ๋ณต๊ตฌํ•˜๋ผ.

 

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” ํ•˜๋‚˜์˜ ์ •์ˆ˜๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. ์ •์ˆ˜๋Š” 100์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋งˆ๋‹ค ์•„๋ž˜ ํ•ญ๋ชฉ๋“ค์„ ํ•œ ์ค„์”ฉ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

  • ํ•œ ๋ฌธ์žฅ์˜ ๋‹จ์–ด ์ˆ˜ n (1 ≤ n ≤ 1 000)
  • ์ œ 1 ๊ณต๊ฐœํ‚ค
  • ์ œ 2 ๊ณต๊ฐœํ‚ค
  • ์•”ํ˜ธ๋ฌธ

๋ชจ๋“  ๋‹จ์–ด๋“ค์€ ์ตœ์†Œ 1๊ฐœ, ์ตœ๋Œ€ 10๊ฐœ์˜ ๋Œ€๋ฌธ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

 

์ถœ๋ ฅ

๊ฐ ์ผ€์ด์Šค๋งˆ๋‹ค

  • ์•”ํ˜ธ๋ฌธ์„ ํ•ด๋…ํ•œ ํ‰๋ฌธ

์„ ํ•œ ์ค„์— ์ค„๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

2
4
A B C D
D A B C
C B A P
3
SECURITY THROUGH OBSCURITY
OBSCURITY THROUGH SECURITY
TOMORROW ATTACK WE

 

์˜ˆ์ œ ์ถœ๋ ฅ1

B A P C
WE ATTACK TOMORROW

 

์ƒ๊ฐ

๊ณต๊ฐœํ‚ค์™€ ๋น„๋ฐ€ํ‚ค๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ public key, private key ๋ผ๊ณ  ๋‘๊ณ  ๋ณ€์ˆ˜์ด๋ฆ„์„ bk,pk๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ๋‘˜๋‹ค ๊ณต๊ฐœํ‚ค์˜€๋‹ค ใ…Žใ…Žใ…Ž

๋ญ ์ด๋ฆ„์€ ์ค‘์š”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ˆ๊น!

๊ณต๊ฐœํ‚ค 2๊ฐœ์˜ ๊ทœ์น™๊ณผ ๋ฐ˜๋Œ€๋กœ ์•”ํ˜ธ๋ฌธ์„ ํ•ด๋…ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ,

๊ณต๊ฐœํ‚ค1๊ณผ ๊ณต๊ฐœํ‚ค2๊ฐ€ ๊ฐ™์•„์ง€๋Š” ๊ฐ’์ผ๋•Œ์˜ i, j๋ฅผ ๊ฑฐ๊พธ๋กœ j,i๋กœ ํ•˜์—ฌ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. 

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

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
#include <iostream>
 
using namespace std;
 
int t, n;
string bk[11], pk[11];
string en[11], de[11];
int idx;
 
void decode(){
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            if(pk[i] == bk[j]){
                de[j] = en[i];
            }
        }
    }
    for(int i=0; i<n; i++){
        cout << de[i] << " ";
    }
    cout << "\n";
}
 
int main(int argc, const char * argv[]) {
    // insert code here...
 
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    
    cin >> t;
    while(t--){
        cin >> n;
       
        for(int i=0; i<n; i++){
            cin >> bk[i];
        }
        for(int i=0; i<n; i++){
            cin >> pk[i];
        }
        for(int i=0; i<n; i++){
            cin >> en[i];
        }
        decode();
    }
    return 0;
}
 
 
Colored by Color Scripter
๋ฐ˜์‘ํ˜•
Comments