강의로 돌아가기
최재혁

제가 임의로 값을 주어줬을때는 문제 없이 시행이 됩니다. ㅠㅠ

실패가 2개 정도 그리고 시간 초과가 4개 정도 발생하는데 혹시 제가 출제자의 의도를 정확히 파악하지 못했기에 이러는 걸까요?

어느 부분을 수정을 해야 되는지 알려주시기 바랍니다. ㅠㅠ

작성중인 코드―Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
    public int solution(int n) {
      int answer = 0;   
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= n; j++) {
                if(i * j == n) {
                    answer ++;
                }
            }
        }

        return answer;
    }
}
1 개의 답변
낙방여우

시간 초과야 최대 크기 백만이니까 100만*100만번을 동작하는 거니까 오래걸리죠. 필요없는 계산은 빼도록 합시다. 예를 들어 i*j==n이 되고 난 이후의 j의 값으로는 i*j의 값은 n을 넘어가니까 break;를 걸어주는 식으로 말이죠. 그런데 실패가 뜨는건 저도 이해가 안가는 군요. 논리적으로 봤을때 이상이 없어 보이는데 말이죠. 그런데 첫번째 for문에 n을 i의 값으로 나눴을때, 나머지가 0이 아닌 i의값은 넘어가는 식을 추가했더니 통과가 되는걸 보면 n을 i로 나눴을때 나머지가 0이 아닌 i의 값일 때도 answer의 값을 올렸다는 건데.. 대체 어떻게 그런 경우가 나올 수 있는 건지 의문이군요...

  • 최재혁

    최대한 짧게 하려다 보니 약수 계산으로 풀었습니다. 그랬더니 승인이 나왔습니다. 의견 주셔서 감사합니다.

    최재혁―2023.04.26 18:20
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.