문제 : https://www.acmicpc.net/problem/32515
32515번: BB84
입력으로 네 개의 문자열이 주어진다. 각 문자열은 A, B로 이루어진 길이 N의 문자열이다.
www.acmicpc.net
문제요약
정훈이와 이안이 각각 보낸 문자열을 통한 새로운키를 통해 태균이가 도청하고 있는지 확인
문제 분류
구현
C++
소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_32515.cpp
채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
93768302 | cbkpar | 32515 | 맞았습니다!! | 3344 KB | 8 ms | C++17 | 604 B |
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int iLen;
cin >> iLen;
string strJQbit, strJKey, strEQbit, strEKey;
cin >> strJQbit >> strJKey >> strEQbit >> strEKey;
for (int i = 0; i < iLen; ++i)
{
if (strJQbit[i] == strEQbit[i])
{
if (strJKey[i] != strEKey[i])
{
cout << "htg!" << "\n";
return 0;
}
}
}
for (int i = 0; i < iLen; ++i)
{
if (strJQbit[i] == strEQbit[i])
{
cout << strJKey[i];
}
}
cout << "\n";
return 0;
}
문제 풀이
정훈이와 이안이의 기저선택을 순서대로 비교하며 같을 경우 생성되는 키가 동일한지 확인
기저선택을 순서대로 비교하며 같은 큐비트의 경우 키가 다를 경우 도청
예제 1)
입력
8
HHVHVVHV
00100110
HVHHHVVV
01100100
출력
0010
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
정훈이 기저 | H | H | V | H | V | V | H | V |
정훈이 키 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
이안이 기저 | H | V | H | H | H | V | V | V |
이안이 키 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
새로생성 되는 키 0010 일치 -> 키 출력
예제 2)
입력
4
HHVH
0101
VHVV
1001
출력
htg!
Index | 0 | 1 | 2 | 3 |
---|---|---|---|---|
정훈이 기저 | H | H | V | H |
정훈이 키 | 0 | 1 | 0 | 1 |
이안이 기저 | V | H | V | V |
이안이 키 | 1 | 0 | 0 | 1 |
새로운 키의 불일치 -> 태균이의 도청 -> htg! 출력
'백준온라인' 카테고리의 다른 글
[백준온라인] 9335번 소셜 광고 (0) | 2025.05.03 |
---|---|
[백준온라인] 33702번 비밀번호 (0) | 2025.05.02 |
[백준온라인] 27468번 2배 또는 0.5배 (0) | 2023.09.21 |
[백준온라인] 6568번 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다 (0) | 2023.03.23 |
[백준온라인] 27516번 과녁 맞추기 (0) | 2023.03.01 |