majw12   2년 전

생각나는 코드가 이거 밖에 없어서 일단 이 코드로 제출해봤는데 시간 초과가 뜨네요....어떻게 접근하면 더 효율적인 코드를 짤 수 있을까요...?

slah007   2년 전

직접 하나하나 세지 않고 각 자리수에 i가 왔을 때 범위를 만족하는 숫자가 몇 개 있는지 셀 수 있습니다.

이때 A이상 B이하인 개수를 세는 것보다는 n이하인 것을 세는 함수를 만들고 (B이하) - (A-1이하) 로 빼는 것이 편합니다.

majw12   2년 전

각 자리수에 i가 왔을 때 범위를 만족하는 숫자가 몇 개 있는지 셀 수 있는 함수를 어떤 방식으로 짜면 될까요...? 감이 안 잡히네요...ㅠㅠ

slah007   2년 전

12345가 있을 때 세 번째 자리를 생각해 보면

3 미만의 수가 온다면 (0 ~ 12)가 오면 뒤에 (0~99)가 올 수 있습니다.

3이 오면 그 앞에 (0 ~ 11)이 오면 뒤에 (0~99)가 올 수 있고, (12)가 오면 뒤에 (0~45)가 올 수 있습니다.

3 초과의 수가 오면 불가능합니다 (0가지)

이런 식으로 각 자리 수에 0~9가 올 때 가능한 수의 경우의 수를 세면 됩니다. 어차피 각 자리를 다 볼거라서 세 번째 자리가 3일 때 다른 자리에 또 3이 오는 건 중복해서 셌다 뺐다 안해도 됩니다.

또 0은 맨 앞에 오면 안되므로 한번 더 생각을 해줘야 합니다.

majw12   2년 전

감사합니다!

댓글을 작성하려면 로그인해야 합니다.