강의

멘토링

커뮤니티

Inflearn Community Q&A

kdh5998's profile image
kdh5998

asked

Algorithm Coding Test to Pass in 2 Weeks (2024)

Optimization (Integer Theory) - (Difficulty ⭐️⭐️⭐️⭐️⭐️, Feel free to skip.)

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

Resolved

Written on

·

328

1

n = int(input())

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

print(answer)

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

python코딩-테스트알고리즘

Answer 2

0

jwson님의 프로필 이미지
jwson
Instructor

n = int(input())

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

print(answer)

 

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

0

안녕하세요 김도현 님, 인프런 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)

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

kdh5998's profile image
kdh5998

asked

Ask a question