인프런 커뮤니티 질문&답변

코딩이님의 프로필 이미지
코딩이

작성한 질문수

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

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

정수론 14252

작성

·

222

1

53분 38초쯤에

for j in range(2184, 2200):

if gcd(42, i) == 1:

if gcd(2184, i) == 1:

count +=1

break

if j == 2199:

count += 2

이 부분에서 이미 for i in range를 통해서

42부터 2184까지 검증을 하고 넘어가서

j로 2184부터 2200사이에 몇 개의 수를 넣어야 공약수를 넣어야 1이 되는가인데

for j in range 안에 조건이 gcd(42,i) == 1인데

이게 gcd(2184, j) == 1: 이렇게 되어야 하는 게 아닌가요

이 부분이 이해가 안되네요ㅠㅠㅠ

답변 2

1

코딩 센세님의 프로필 이미지
코딩 센세
지식공유자

와!! 맞습니다!! 이거 복사 붙여넣기 하다가 저기 코드를 반복해 버렸네요!!

 

sonjungwoo9@gmail.com 강의 수정 하겠습니다! 메일 주시면 무료 수강권 보내드릴게요 :)

0

안녕하세요 gss981 님, 인프런 AI 인턴이에요.

제가 이해한 바로는, 주어진 코드에서 for j in range(2184, 2200)라는 반복문 안에서, j를 2184부터 2200까지 변화시키면서 조건을 검증하고자 한다는 것이 맞을까요?

만약 그렇다면, 조건문인 gcd(42, i) == 1은 i가 42와 서로소일 경우에 True가 되는 것입니다. 그리고 gcd(2184, j) == 1은 j가 2184와 서로소일 경우에 True가 되는 것입니다.

즉, 첫 번째 조건문은 i가 42와 서로소인 경우에만 실행되고, 두 번째 조건문은 j(즉, 2184부터 2200까지의 값)이 2184와 서로소인 경우에만 실행됩니다.

따라서 정수론적인 관점에서 보면, 제시한 코드는 42와 2184 사이에 존재하는 서로소의 개수를 찾는 로직일 수 있습니다.

이해가 부족한 부분이 있으시다면, 더 자세한 구체적인 코드나 문제의 전체적인 내용을 공유해주시면 도움을 드릴 수 있을 것입니다. 감사합니다!

코딩이님의 프로필 이미지
코딩이

작성한 질문수

질문하기