일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 법의학
- 운영체제
- algorithm
- 재테크/투자
- 자료구조
- Database
- 독서
- data structure
- 문제풀이
- LeetCode
- Computer Science
- swea
- D3
- 데이터베이스
- SW Expert Academy
- D2
- 네트워크
- BOJ
- language
- c++
- 알고리즘
- 프로그래머스
- algogritim
- Programmers
- network
- db
- 백준
- OS
- 감상문
- cs
Archives
- Today
- Total
선택은 나의 것
[BOJ 백준] 2916번 자와 각도기 본문
문제
BOJ 2916 : https://www.acmicpc.net/problem/2916
2916번: 자와 각도기
문제 창영이는 방 청소를 하다가 자와 각도기를 발견했다. 다음날 창영이는 학교에 자와 각도기를 들고 갔고, 현우와 "작도 대결"을 하려고 한다. 창영이는 각도기와 자를 이용해서 만들 수 있는
www.acmicpc.net
접근
이 문제에서 우리는 창영이가 알고 있는 임의의 각도들을 이용하여 또 다른 각도를 만들 수 있다.
ex) 60°와 20°를 이용하여 80°(60°+20°)와 40°(60°-20°)를 만들 수 있다.
이때 임의의 각의 배수인 각도 만들 수 있다.
ex) 30°와 30°를 이용하여 60°를 만들 수 있다.
따라서 창영이가 만들 수 있는 각을 전부 조사하여 배열에 저장한 뒤에 테스트 케이스에 맞는 답을 출력해주면 된다.
코드
// algorithm study
// BOJ_2916_자와 각도기
#include <iostream>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
int chk[360] = {0};
chk[0] = 1;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
for (int j = 0; j < 360; j++) {
if (chk[j] == 0)
continue;
for (int k = 1; k < 360; k++) {
chk[(j + (k * num)) % 360] = 1;
chk[abs((j - (k * num)) % 360)] = 1;
}
}
}
for (int i = 0; i < k; i++) {
int temp;
cin >> temp;
if (chk[temp] == 1)
cout << "YES"
<< "\n";
else
cout << "NO"
<< "\n";
}
return 0;
}
'☽ Algorithm > BOJ' 카테고리의 다른 글
[BOJ 백준] 10546번 배부른 마라토너 (0) | 2020.05.31 |
---|---|
[BOJ 백준] 16947번 서울 지하철 2호선 (0) | 2020.05.26 |
[BOJ 백준] 10942번 팰린드롬? (0) | 2020.05.25 |
[BOJ 백준] 17090번 미로 탈출하기 (0) | 2020.05.24 |
[BOJ 백준] 16954번 움직이는 미로 탈출 (0) | 2020.05.24 |
Comments