inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

2강 14분쯤 문제 2번 14232번 출력초과...

해결된 질문

532

미니

작성한 질문수 6

1

자꾸 출력초과가 나요..

vscode에서 돌려보면 맞는 출력값이 나오는데

왜 백준에서는 출력초과가 나는지 모르겠어요 ...

강의에 있는 코드 참고해서 한건데 왜 안되는지 모르겠어요 ㅠ........

 

n = int(input())
jewel = [] 

for i in range(1,int(n**0.5)+1):
    if i >2 :
        if n%i == 0:
            jewel.append(i)
            jewel.append(n//i)

jewel.sort()
print(len(jewel))
print(' '.join(map(str,jewel)))

python 코딩-테스트 알고리즘

답변 2

1

코딩 센세

답변이 늦어 죄송합니다 😢

백준 온라인 저지에서는 정답의 길이보다 입력하신 코드로 생성되는 답의 긴 경우에 출력 초과가 발생하는 것으로 알고 있습니다!

먼저, 해당 문제는 단순하게 약수만 구해서 되는 문제는 아닙니다. 주신 코드에 대해서 조금 더 고민해 보실 수 있게 몇가지 반례 케이스를 드려보고자 합니다.

반례 1

입력

3

출력

1

3

(무게가 3인 보석 1를 가져올 수 있습니다.)

반례 2

입력

16

출력

4

2 2 2 2

(무게가 2인 보석 4개를 가져오면 가장 많은 보석을 옮길 수 있습니다.)

1

미니

바쁘실텐데 답변 감사합니다!

강의보고 열심히 공부할게요 🙂

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

정민지님, 제출하신 코드를 보니 중복된 약수를 추가하지 않도록 주의가 필요해 보입니다.
만약 n이 완전제곱수일 경우, n**0.5에 해당하는 약수가 중복해서 리스트에 추가될 수 있기 때문입니다.
또한, 약수를 구할 때 1과 n 자신을 고려하지 않은 것 같습니다.

다음과 같은 수정을 제안해 드립니다:

n = int(input())
jewel = set()  # 집합을 사용해 중복을 방지합니다.

for i in range(1, int(n**0.5) + 1):
    if n % i == 0:
        jewel.add(i)       # i는 n의 약수입니다.
        jewel.update([n//i])  # n//i도 n의 약수입니다. (중복되지 않도록 update 메소드 사용)

jewel = sorted(jewel)  # 집합을 정렬된 리스트로 변환합니다.
print(len(jewel))
print(' '.join(map(str, jewel)))

집합을 사용함으로써 중복된 값을 추가하는 문제를 방지할 수 있습니다.
이렇게 수정하고 다시 백준에서 제출해 보시길 권해 드립니다.

dp[x]가 최대값이라고 확신할수 있는 이유

0

45

1

1090번 문제 질문

0

150

1

유니온파인드

0

112

1

투포인터 25:15 질문

1

128

1

#1090번 문제 반례가 궁금합니다.

0

148

1

예제코드 자바입니다

1

186

1

정수론 파트 #2247 문제에 대한 질문입니다!

0

102

0

코드 오류

0

185

1

2강 정수론 문제3 #1407 질문

0

127

0

이차원 배열 (int형)dp로 0 혹은 -1로 체크하는 방법 말고 boolean형 배열로 체크해서 바로 리턴해줄 수 없나요?

0

154

0

1717번 최적화

0

112

0

백준 22988 문제 질문

1

193

2

[Python] 백준 1090번 문제

1

226

3

강의자료에서

1

162

2

2503 문제 제한 조건 질문!

1

249

2

백준 22988 번 문제

1

193

1

추가 강의 순서

1

180

2

(*문제 풀이)1090 테스트케이스 1번 C++

1

221

2

7강 RGB 색칠하기 질문 있습니다.

1

160

2

정수론 약수 빠르게 구하기 질문

1

257

1

1090 문제의 2, 3번째 아이디어는 결국 같은거 아닌가요?

1

373

2

1090 문제 관련하여 맨해튼 거리 최솟값에 대해 질문 있습니다.

1

223

2

누적합 문제 3번 질문

1

216

2

기억 ( 누적합 ) 강의 11660 문제

1

163

2