문제 풀이 (사고의 흐름)
문제를 보고 가장 처음든 생각은 N이 K로 딱 나누어 떨어지면 모두 같은 수의 과자를 먹을 수 있다는 것이다. 그리고 자연스럽에 N이 K로 딱 나누어 떨어지지 않으면 어떤지 생각해 보았다.
다르게 말하면 N이 K로 나누었을 때, 나머지 Z(K보다 작다)가 있다는 말이고 Z개의 과자는 Z명의 사람들에게 1개씩 줄 수 있다. 즉, Z명의 사람들은 과자 1개씩을 더 받게되고, K-Z명의 사람들은 과자를 더 받지 못한다. 이 상황에서 과자 수 차이는 1이다.
결론적으로 다음과 같다고 할 수 있다.
- N이 K로 나누어 떨어질 때(N%K == 0), 과자수 차이는 0
- N이 K로 나누어 떨어지지 않을 때(N%K != 0), 과자수 차이는 1
정답 코드
#include iostream
int main(void) {
int t, n, k;
scanf(%d, &t);
for (int t_i = 1; t_i = t; t_i++) {
scanf(%d %d, &n, &k);
printf(#%d %dn, t_i, (n%k) != 0);
}
return 0;
}
마무리
처음 알고리즘 문제를 접했을 때, 시간가는줄 모르고 다양한 문제를 풀었었다. 문제를 풀고 해답을 찾아가는 과정이 너무나 재밌었고, 어려운 문제를 마침내 풀어냈을 때의 그 감정이 너무나 좋았다. 알고리즘을 하나의 마인드 스포츠 처럼 대했던거 같다. 하지만 일이 바빠지고 다른 공부할 것들이 생기면서 알고리즘 문제를 오래동안 놓고있었다. 하지만 이렇게 다시 알고리즘 문제를 풀어보니, 쉬운문제 이지만 옜날의 감정이 조금씩 살아난다. 앞으로도 SW Expert Academy에 있는 레벨 3~5의 문제들을 계속 풀어볼 예정이다.
728x90
'STUDY > Algorithm' 카테고리의 다른 글
[알고리즘] SW Expert Academy 10806. 수 만들기 (5) | 2020.11.09 |
---|---|
[알고리즘] SW Expert Academy 10033. 카드 뒤집기 (0) | 2020.07.04 |