728x90
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
GitHub - minyoung529/AlgorithmStudy: 여러 알고리즘 문제를 푸는 저장소입니다.
여러 알고리즘 문제를 푸는 저장소입니다. Contribute to minyoung529/AlgorithmStudy development by creating an account on GitHub.
github.com
간단한 수학 문제!
계속해서 이어지는 사이클을 Queue를 통해서 해결했다.
do
{
int val1 = queue.front() - '0';
queue.pop();
int val2 = queue.front() - '0';
queue.push(to_string(val1 + val2).back());
++count;
} while (queue.front() != input[0] || queue.back() != input[1]);
사이클의 메인 로직은 이러한데, 이해하기 쉽게 이미지로 표현하자면...

이렇게 된다. 그림은 좀 못그렸지만...
input
=> 26
process...
1 68
2 84
3 42
4 26 same!
answer
=> 4
이런 과정을 거치는 것! 쉽지만 재미있는 문제였다.
728x90
'알고리즘 문제풀이 > 수학' 카테고리의 다른 글
| [백준][C++] 21275 폰 호석만 (0) | 2022.11.04 |
|---|---|
| [백준][C++] 2960 에라토스테네스의 체 (0) | 2022.11.04 |
| [백준][C++] 9613 GCD 합 (0) | 2022.11.04 |
| [백준][C++] 1934 최소공배수 (1) | 2022.11.04 |
| [백준][C++] 2745 진법 변환 (0) | 2022.11.04 |