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

pmg4289님의 프로필 이미지
pmg4289

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

C언어 기출문제의 변형

7번 빈칸채우기 문제요

해결된 질문

작성

·

128

0

최대공약수라는 배경지식이 없을 때 푸는 방법은 없나요?

gcd에서 빈칸 내용(a%b)을 모르는 상태에서 어떻게 12를 유추하나요?

빈칸의 수식을 모를 때 풀어나가는 과정을 알려주셨으면 합니다.

답변 1

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

"유클리드 호제법을 모르는 상태에서 저 코드만 보고 최대공약수를 구하는 방법인 것을 어떻게 아느냐" 라는 것이 질문이시면 사실 코드만 봐서는 단번에 알기는 불가능합니다. 직접 풀어보지 않는 한요.

 

바로 코드만 보고 최대공약수인 것은 알기 어렵습니다.

만약 코드만 보고 최대공약수인 것을 알려면 아래와 같은 코드가 나오면 아실 수는 있을 겁니다.

  1. 함수가 하나있다. 여기에 들어온 입력값의 약수에 최대값을 저장해서 변수로 가지고 있다.

  2. 어떤 2개의 숫자를 여기에 넣는다. 그리고 두 개의 최대 약수가 ==을 통해 참인 경우 1을 리턴한다.

이런 코드 흐름이면 바로 알 수 있습니다. 우리 모두 약수를 구하는 코드는 %로 구할 수 있고, 그 최대값을 구하는 코드도 쉽게 알고, ==도 알 수 있으니까요. 하지만 유클리드 호제법은 최대공약수를 구하는 수학 공식 같은 것으로 생각하시면 됩니다.

 

이런 것들은 사실 많습니다.

예를 들어 XOR로 두 값을 교환(swap)하는 것도 사전 배경지식이 없으면 즉시 알기는 정말 어렵습니다.

x = x ^ y;  
y = x ^ y;  
x = x ^ y;  

이런 것들은 그냥 해보면 동작합니다. 원리를 바로 봐서는 알 수가 없습니다.

 

그래서 영상에 예시로 넣은 것입니다.

혹시라도 시험에 나올 수도 있으니까요.

 

사실 저 방법은 우리가 어렸을 때 수학 교과서에서 한 번 쯤은 배웠을텐데,

자라면서 잊어버렸을 듯 싶습니다.

 

수학의 원리에 대해서 물어보시면 저도 답변은 어렵습니다 😅

pmg4289님의 프로필 이미지
pmg4289

작성한 질문수

질문하기