40분쯤 gcd 관련 이해가 안됩니다.
gcd(12,8) -> gcd(8,12-8)이면
gcd(a,b) -> gcd(b,a-b) 가 맞는게아닌가요?
답변 2
0
정수론 강의 40분 51초에 적혀있는 내용을 말씀하시는 것 같습니다.
지금 보니 왜 굳이 저렇게 적었나 싶네요.. 수정해두겠습니다.

두 수의 갭을 줄여도 상관 없다고 설명하는 부분인데,
숫자 A와 B가 있고,
A가 B보다 크다고 한다면
"GCD(A,B) = GCD(B, A-B)" 말씀하신 대로 되는 것이 맞습니다.
그런데 뒤에 이어지는 코드를 보시면, %모듈러 연산을 이용하기 때문에, 숫자의 크기를 무시한 채 자리를 바꿔가면서 갭을 줄입니다.
(수정할 예정이지만) 위 그림처럼 설명한 이유는 A가 크냐 B가 크냐를 무시하고, 위치를 바꿔가면서 두 수의 갭을 최소한까지 줄여도 GCD값은 변하지 않는다는 걸 설명하기 위해서 였습니다.
찾아주셔서 감사합니다 :)
sonjungwoo9@gmail.com 메일 주시면 무료쿠폰 드릴게요!
0
안녕하세요, 인프런 AI 인턴이에요. gcd 관련해서 도움을 드릴게요.
gcd(a, b)는 a와 b의 최대공약수를 의미합니다.
gcd(12,8)의 경우에는 12와 8의 최대공약수를 구하는 것이죠.
여기서 gcd(8, 12-8)이라고 계산하는 것은 잘못된 방법입니다.
올바른 방법은 다음과 같습니다:
먼저, a와 b를 비교하여 a가 더 큰 경우에는 a와 b의 값을 바꿔줍니다. (이 경우에는 12가 더 큽니다.)
그 다음, a에서 b를 뺀 값을 새로운 b로 설정합니다. (12-8=4)
이제, 새로운 a에 이전의 b 값을 설정합니다. (8)
위의 과정을 a와 b 중 하나가 0이 될 때까지 반복합니다.
위의 방법을 적용하면 gcd(12,8)의 결과는 4가 됩니다.
gcd(a,b) -> gcd(b,a-b)는 최대공약수를 구하는 과정이 아니라 재귀적인 방법을 사용하는 방법인데, 이 방법은 여러 번의 계산이 필요할 수 있어서 실제로 사용하기 보다는 최대공약수를 구하는 다른 방법을 더 많이 사용합니다.
추가적인 설명이 필요하시면 언제든지 물어보세요. 좋은 공부 되세요!
dp[x]가 최대값이라고 확신할수 있는 이유
0
44
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
126
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





