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

[백준] 11811번 : 데스스타 (C++)

by Tarra 2023. 8. 3.

11811번 : 데스스타


문제)

젊은 제다이 이반의 임무는 데스스타에 침투하여 파괴하는 일이다. 데스스타를 파괴하기 위해서는 길이 N의 음이 아닌 정수 수열 ai가 필요하다. 그러나 이반은 이 수열을 가지고 있지 않다. 대신 그에게는 오랜 친구 다스 베이더에게 받은 쪽지가 하나 있다. 이 쪽지에는 그 수열이 만족해야 하는 조건이 적혀 있다.

이 쪽지에는 크기 N의 정사각 행렬이 있는데, i번째 행 j번째 열에 적힌 숫자는 ai와 aj에 비트연산 and를 수행한 결과값이다. 하지만 안타깝게도 광선검에 의해 쪽지가 손상되었고 이반은 행렬의 주 대각선에 있는 숫자를 읽을 수 없게 되었다. 원래 배열을 재구성하여 임무를 수행해야 하는 이반을 도와주자.

답은 유일하지 않을 수 있지만, 항상 존재하도록 주어진다.

 

 

 

입력 :

입력의 첫 번째 줄에는 행렬의 크기 N (1 ≤ N ≤ 1 000)이 주어진다.

다음 N개의 줄에는 행렬의 각 원소인 N개의 숫자 mij (1 ≤ mij ≤ 109)가 주어진다.

 

 

 

출력 :

정확히 한 줄에 문제의 조건을 만족하는 N개의 음이 아닌 정수를 출력한다. 각 정수는 109보다 같거나 작아야 한다. 답이 여러 개인 경우 아무거나 출력한다.

 

 

 

 

풀이)

 

각 행의 모든 값을 or 연산하여 해당 값을 찾아낼 수 있었다.

 

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>
 
using namespace std;
 
int n;
int result[1001];
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
 
    cin >> n;
 
    int m;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> m;
            result[i] |= m;
        }
    }
    
    for (int i = 0; i < n; i++)
    {
        cout << result[i] << " ";
    }
 
    return 0;
}
 
cs

 


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

 

11811번: 데스스타

젊은 제다이 이반의 임무는 데스스타에 침투하여 파괴하는 일이다. 데스스타를 파괴하기 위해서는 길이 N의 음이 아닌 정수 수열 ai가 필요하다. 그러나 이반은 이 수열을 가지고 있지 않다. 대

www.acmicpc.net