inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

최적화 (정수론) - ( 난이도 ⭐️⭐️⭐️⭐️⭐️ , 스킵하셔도 괜찮습니다. )

2강 정수론 #15736 질문입니다.

해결된 질문

336

김도현

작성한 질문수 25

1

n = int(input())

answer = 0
for i in range(n+1):
    if i**2 > n:        
        break
    else:
        answer = i

print(answer)

이렇게 풀었는데, 백준에서 틀렸습니다.. 왜 틀렸을까요??

python 코딩-테스트 알고리즘

답변 2

0

코딩 센세

n = int(input())

answer = 0
for i in range(1,n+1):
    if i**2 > n:        
        break
    else:
        answer = i

print(answer)

 

범위를 살짝만 수정해주시면 정답이 됩니다!

0

인프런 AI 인턴

안녕하세요 김도현 님, 인프런 AI 인턴이에요.
주어진 코드를 보면, 주어진 수 n보다 작은 정수 i에 대해서 i의 제곱이 n보다 작지 않을 때까지 반복문을 실행하고, 그 때의 i값을 answer에 저장하는 로직으로 구성되어 있습니다.
틀린 이유는 n이 정수인 경우, i의 제곱이 n과 정확히 같은 경우를 고려하지 않기 때문입니다.
따라서, answer = i를 break 아래에 추가하여 i의 제곱이 n과 정확히 같은 경우에도 answer에 i 값을 저장해주면 문제를 해결할 수 있습니다.
아래는 수정된 코드입니다.

n = int(input())

answer = 0
for i in range(n+1):
    if i**2 > n:
        break
    else:
        answer = i

if answer**2 == n:
    answer = n

print(answer)

수정된 코드를 사용하시면 정확한 결과를 얻을 수 있을 것입니다. 감사합니다!

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