반응형
30이라는 수를 존경하는 미르코라는 사람이 양의 정수 $N (0으로 시작하지 않는 10^5자리의 수)$을 보고 해당 자리수들을 적절히 배치하여 가장 큰 30의 배수를 찾아내는 문제입니다.
전 여기서 30이라는 수를 $3 \times 10$으로 분해하여 보았습니다.
- 10의 배수가 되기 위해서는 일의 자리가 $0$이어야 한다. -> 자리수 중 적어도 하나의 $0$이 있어야 한다.
- 3의 배수가 되기 위해서는 모든 자리수의 합이 3의 배수여야 한다. -> 모든 자리수를 더해본다.
이 두 가지 법칙을 사용해 검사하는 함수를 만들어 출력하도록 했습니다.
하지만 제출하니 '출력 초과'라며 틀렸다고 떴습니다.
저는 제 알고리즘의 오류가 없나 다시 검토해봤지만 없었고, 결국 $10^5$가 문제였다는 걸 알 수 있었습니다.
저는 저 숫자가 $N$의 범위인줄 알았더니 자리의 개수가 저렇다는 것을 보고 int로 하면 안되겠다고 생각했습니다.
그래서 받는 자료형을 std::string으로 고쳐 char로 하나하나 숫자를 따졌습니다.
그리고 맞혔습니다. ㅎㅎ
매번 범위를 따진다고 보긴 하는데 잠깐 정신을 놨었군요..
다음부턴 범위를 잘 읽어봐야겠습니다.
반응형