문제 : 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! 출력

+ Recent posts