👩🏻💻 문제링크
https://www.acmicpc.net/problem/1476
✍️ 아이디어
1. 문제 이해
- e는 16진수 s는 29진수 m은 20진수 일때 10진수로 e=s=m이 되는 최소값을 구해보자
2. 내가 문제를 풀때는 가장 작은 수에 진수의 수만큼 더하고 가장 작은 수가 2개일 경우 두 수의 진수의 수만큼 더했다
3. 다른사람이 푼 방식은 년도를 하나씩 더하여 year = e+15x임을 이용해 (year-e)%15 == 0 을 조건으로 걸어서 year을 찾아냈다
4. 전체 경우의 수 15 * 28 * 19
✍️소스코드
- 어거지로 푼 느낌이 강하다(내 코드)
#include <iostream>
using namespace std;
int main()
{
int e,s,m; cin>>e>>s>>m;
while(1)
{
if(e==s && s==m) break;
if(e<s && e<m) e+=15;
else if(s<e && s<m) s+=28;
else if(m<e && m<s) m+=19;
else if(e==s && e<m)
{
e+=15; s+=28;
}
else if(s==m && s<e)
{
m+=19; s+=28;
}
else if(e==m && m<s)
{
e+=15; m+=19;
}
}
cout<<e<<'\n';
}
- 다른 사람의 코드 (year = e+15x = s+28y = m+19z임을 이용함)
#include <iostream>
using namespace std;
int E, S, M;
int calculateYear(void)
{
//Year - E = 15*x
//Year - S = 28*y
//Year - M = 19*z
int result;
int year = 1;
while (1)
{
if ((year - E) % 15 == 0 && (year - S) % 28 == 0 && (year - M) % 19 == 0)
{
result= year;
break;
}
year++;
}
return result;
}
int main(void)
{
cin >> E >> S >> M;
cout << calculateYear() << endl;
return 0;
}
출처: https://jaimemin.tistory.com/520 [꾸준함:티스토리]
체감난이도 | 걸린시간 | 참고 | 사용 문법 |
하 | 20min | x | 완전 탐색(그냥 다해보기) |
'PS 연습' 카테고리의 다른 글
[완전 탐색] 백준 문제 풀이 - 15649 N과 M (1) (0) | 2022.07.16 |
---|---|
[완전 탐색] 백준 문제 풀이 - 1107 리모컨 (0) | 2022.07.12 |
[완전 탐색] 백준 문제 풀이 - 3085 사탕 게임 (0) | 2022.07.10 |
[DP] 백준 문제 풀이 - 17404 RGB거리 2 (0) | 2022.07.09 |
[DP] 백준 문제 풀이 - 11054 가장 긴 바이토닉 부분 수열 (0) | 2022.07.06 |