728x90
문제 링크
https://www.acmicpc.net/problem/5086
문제 요약
두 수가 주어졌을 때, 첫 번째 수가 두 번째 수의 약수인지, 배수인지, 아니면 둘 다 아닌지 판별하는 문제
접근 방법
- 자료구조: 변수 2개
- 알고리즘: 나머지 연산을 이용한 약수/배수 판별
- 핵심 아이디어:
- a가 b의 약수 → b % a == 0 (b가 a로 나누어떨어짐)
- a가 b의 배수 → a % b == 0 (a가 b로 나누어떨어짐)
- 0 0이 입력되면 종료
풀이 코드
#include <iostream>
int main() {
int a, b;
while(true) {
std::cin >> a >> b;
if(a == 0 && b == 0) {
break;
}
if(b % a == 0) {
std::cout << "factor" << std::endl;
}
else if(a % b == 0) {
std::cout << "multiple" << std::endl;
}
else {
std::cout << "neither" << std::endl;
}
}
return 0;
}
시간/공간 복잡도
- 시간 복잡도: O(T) - T는 테스트 케이스 수
- 공간 복잡도: O(1)
실행 결과
- 메모리: 2020 KB
- 시간: 0 ms
참고한 풀이
- 나머지 연산(%)을 이용한 약수/배수 판별
- a가 b의 약수 ↔ b가 a의 배수 관계 이해
728x90
'코딩테스트' 카테고리의 다른 글
| [BOJ 2869] 달팽이는 올라가고 싶다 - 수학 (0) | 2025.12.12 |
|---|---|
| [BOJ 1193] 분수찾기 - 수학 (0) | 2025.12.11 |
| [BOJ 2292] 벌집 - 수학 (0) | 2025.12.10 |
| [BOJ 2903] 중앙 이동 알고리즘 - 수학 (0) | 2025.12.09 |
| [BOJ 2720] 세탁소 사장 동혁 - 그리디 알고리즘 (0) | 2025.12.08 |