2231번 - 분해합
안녕하세요.
문제에 대한 풀이는
count 변수를 통해 제시된 입력이 몇 자리 수인지 알아낸 다음, 생성자가 될 수 있는 최소 조건을 정하였습니다.
int num = N - 9 * count; 를 통하여
N = abc + a + b + c이므로 abc가 될 수 있는 최소값을 구하는 것입니다.
그리고, ret을 통해 num + 1의 자리 + 10의 자리....를 구하여 만약 이 값이 N과 같다면 루프를 종료하게 만들었습니다.
시간초과를 벗어난 적이 없어 이러한 로직이 틀릴지는 잘 모르겠지만, 더 이상 수행시간을 줄일 수 있는 방법을 잘 모르겠습니다.
문제는 4%에서 시간초과가 됩니다.
입력이 9일 때 어떻게 되나요?
댓글을 작성하려면 로그인해야 합니다.
bear1704 3년 전
안녕하세요.
문제에 대한 풀이는
count 변수를 통해 제시된 입력이 몇 자리 수인지 알아낸 다음, 생성자가 될 수 있는 최소 조건을 정하였습니다.
int num = N - 9 * count; 를 통하여
N = abc + a + b + c이므로 abc가 될 수 있는 최소값을 구하는 것입니다.
그리고, ret을 통해 num + 1의 자리 + 10의 자리....를 구하여 만약 이 값이 N과 같다면 루프를 종료하게 만들었습니다.
시간초과를 벗어난 적이 없어 이러한 로직이 틀릴지는 잘 모르겠지만, 더 이상 수행시간을 줄일 수 있는 방법을 잘 모르겠습니다.
문제는 4%에서 시간초과가 됩니다.