250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자료해석
- 토익문법정리
- dfs
- 토익문법노트
- 주어
- BFS
- 다이나믹프로그래밍
- 브루트포스
- TOEIC
- sqld
- 공기업공부
- 알고리즘
- TOEIC문법
- 토익단어
- BOJ
- 토익시험준비
- 데이터베이스
- 매일매일NCS
- 문제해결능력
- TOEIC Vocabulary
- 자바스크립트
- 영단어암기
- 영단어
- 영어문장
- 파이썬
- NCS수리자료해석
- 영문법
- 토익 영단어
- 수리능력
- 너비우선탐색
Archives
- Today
- Total
하나씩 알아가기
[BOJ_6064] 카잉 달력 본문
728x90
반응형
이 문제는 직관적으로 이해하기가 정멀 어렵습니다. 예시를 보면서 식을 세워 문제를 풀어야 합니다.
M=5, N=7, x=3, y=2 라고 하면 카잉달력의 총 날짜는 M*N = 35개(0~34)입니다.
시작점인 0에서 x를 더한 날짜가 최초날짜이고 최초날짜로부터 M번씩 간격을 두고 총 N번 날짜를 확인하면 됩니다.
이 N번 중 y 값이 일치하는 날짜가 몇 번째 인지를 찾는 것이 핵심입니다.
3+0부터 시작해서 3%7 = 3, (3+5)%7 = 1, (3+10)%7 = 6, (3+15)%7 = 4, (3+20)%7 = 2
이것을 for 문으로 잘 구현해야 합니다.
다시 말하면, x를 이용해 모든 해를 고려하지 않고, i X M + x의 형태만 조사하면 됩니다.
#include<iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int m, n, x, y;
cin >> m >> n >> x >> y;
x -= 1;
y -= 1;
bool ok = false;
for (int i = x; i < (n * m); i+=m) {
if (i % n == y) {
cout << (i + 1) << '\n';
ok = true;
break;
}
}
if (!ok) {
cout << -1 << '\n';
}
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ_1107] 리모컨 (0) | 2021.04.29 |
---|---|
[BOJ_11052] 카드 구매하기 (0) | 2021.02.14 |
[BOJ_7576] 토마토 (0) | 2021.02.09 |
[BOJ_4963] 섬의 개수 (0) | 2021.02.03 |
[BOJ_11724] 연결 요소의 개수 (0) | 2021.02.03 |