작성
·
124
0
안녕하세요 큰돌님! 강의 재미있게 잘 듣고 있습니다 ㅎㅎ
1-O번을 혼자 풀어서 맞추긴 했는데... 큰돌님 풀이 방식이랑은 좀 다르기도 하고, while문을 중첩해서 쓴 게 시간복잡도 때문에 마음에 걸려서요.
- 코드 : http://boj.kr/a5eb7d7c669c408882d3004546fb537d
저 같은 경우는 아래와 같은 방식으로 생각하고 구현하였습니다.
1. 입력범위를 먼저 보고 ( 1 <= n <= 10000)
2. 1, 11, 111, 1111을 제외하고는 맨 뒷자리가 1이 나오는 n의 값은 3, 7, 9 밖에 없다는 걸 깨달음
3. 나눗셈을 할때 나머지에 10을 곱해서 다음 자리수에 더해 다시 나눠서 계산하는 방식을 차용. 다시 말해 나눗셈을 할 때, 윗자리부터 몫과 나머지를 구하고, 나머지를 윗자리 몫을 구하고 남은 나누어지는 수에 더해서 다시 나누는 방식을 사용하기로 함. (배수이면 언젠간 나누어 떨어지므로)
4. 코드상으로 시간 복잡도는 좋지 않아보이지 않았지만, 주어진 범위내에서는 111...11 자리수가 20이 넘어가더라도 한번의 테스트 케이스에서 대략 20번만 수행하면 되므로 그대로 구현해보았음.
혹시 이런 경우에 테스트 케이스를 맞췄더라도, 시간 복잡도를 고려해서 더 나은 방법을 고민해보는게 좋을까요?
답변 1
1
안녕하세요 ㅎㅎ
와 생각 괜찮게 잘하셨네요 ㅎㅎ
혹시 이런 경우에 테스트 케이스를 맞췄더라도, 시간 복잡도를 고려해서 더 나은 방법을 고민해보는게 좋을까요?
>> 테케가 아니라 제출 -> 성공 했을 때는 다른 방법에 대한 공부를 그렇게까지 많이 할 필요는 없습니다.
다만 제 해설을 보시고 아 이렇게도 풀 수 있구나~ 라고 생각하고 한번정도 공부하시는 것도 좋습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
감사합니다!