본문 바로가기
Develop/백준 (Cpp)

[백준] 27960번 : 사격 내기 (C++)

by Tarra 2023. 8. 1.

27960번 : 사격 내기


문제)

A, B, C는 올해에도 예비군 훈련을 받으러 간다. 이번 예비군 훈련 과정 중에는 영점 사격이 있으며, 10개의 과녁 각각에 점수를 매겨 맞춘 과녁 점수의 총합을 측정한다. 과녁을 맞혔을 때, 과녁별로 각각 1점 / 2점 / 4점 / 8점 / 16점 / 32점 / 64점 / 128점 / 256점 / 512점을 얻는다. 과녁을 맞히지 않으면 해당 점수를 얻을 수 없으며, 각 과녁은 사람별로 최대 한 번만 맞힐 수 있다.

A, B와 C는 영점 사격 점수를 가지고 훈련 이후에 먹을 저녁 내기를 했다. A와 B는 각자 자신들의 총합 사격 점수를 공유했지만, C는 저녁 내기의 상황을 더 쫄깃하게 하고 싶었던지 점수를 공유하지 않고 아래와 같은 말을 했다.

"난 너희 둘 중 한 명만 맞힌 표적은 다 맞혔는데, 너희 둘 다 못 맞히거나 둘 다 맞힌 것은 전부 안 맞혔어."

A와 B는 이 말만으로는 도저히 C의 총합 점수를 알 수가 없어서 몰래 여러분에게 도움을 요청했다. C의 점수를 구해 A와 B를 도와주자!

 

 

 

입력 :

첫 번째 줄에 A와 B의 영점 사격 총합 점수인 정수  (0≤S_A,S_B≤1023)가 주어진다. A와 B의 점수를 과녁의 점수 합으로 나타낼 수 없는 경우는 주어지지 않는다.

 

 

 

출력 :

C의 점수를 출력한다.

 

 

 

 

 

풀이)

이 문제의 핵심인.

"난 너희 둘중 한 명만 맞힌 표적은 다 맞혔는데, 너희 둘 다 못 맞히거나 둘 다 맞힌 것은 전부 안 맞혔어"는

비트연산자 중 XOR에 해당하는 것이므로

두 값을 입력 받고 XOR 연산자인 ^ 를 해주면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int a, b;
 
int main()
{
    cin >> a >> b;
    cout << (a ^ b);
 
    return 0;
}
 
cs

출처 : https://www.acmicpc.net/problem/27960 

 

27960번: 사격 내기

A, B, C는 올해에도 예비군 훈련을 받으러 간다. 이번 예비군 훈련 과정 중에는 영점 사격이 있으며, 10개의 과녁 각각에 점수를 매겨 맞춘 과녁 점수의 총합을 측정한다. 과녁을 맞혔을 때, 과녁별

www.acmicpc.net