본문 바로가기

알고리즘

(3)
[Visual Stduio] scanf_s 오류 무시하기 더보기 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 그저 과제를 풀 뿐임에도, 마이크로소프트는 보안 상의 이유로 scanf 대신 scanf_s를 쓰라고 강요한다. 막상 scanf_s로 바꾸면 백준에서 또 컴파일 에러가 난다. 귀찮은 이 에러를 해결하는 법을 알아보자. 1. scanf_s 사용하기 당연하지만 가장 쉬운 방법은, scanf_s를 사용하는 것이다. 다만 scanf_s를 사용하면 백준 등 다른 컴파일러에 사용할 땐 컴파일 에러가 난다. 상당..
[알고리즘] 확장 유클리드 알고리즘 구현하기 이번 글에선 유클리드 알고리즘의 진화판, 확장 유클리드 알고리즘(Extended Euclidean Algorithm)에 대해 이해하고, 구현해보자. 유클리드 알고리즘은 두 수 a, b의 최대공약수를 구하는 알고리즘이었다. 유클리드 알고리즘을 모른다면 아래 글을 참고하자. [알고리즘] 유클리드 알고리즘 구현하기 유클리드 알고리즘(Euclidean Algorithm)은 유클리드 호제법으로도 불리며, 두 수 a, b의 최대공약수 gcd를 구하는 방법이다. 유클리드 알고리즘의 기본 동작 원리는 간단히 다음과 같이 쓸 수 있다. 두 autumncat.tistory.com 확장 유클리드 알고리즘이란? 확장 유클리드 알고리즘은 sa + tb = gcd(a, b)를 만족하는 s, t를 구하는 알고리즘이다. 증명은 생략..
[알고리즘] 유클리드 알고리즘 구현하기 유클리드 알고리즘(Euclidean Algorithm)은 유클리드 호제법으로도 불리며, 두 수 a, b의 최대공약수 gcd를 구하는 방법이다. 유클리드 알고리즘의 기본 동작 원리는 간단히 다음과 같이 쓸 수 있다. 두 수 a, b가 있을 때, a를 b로 나눈 나머지를 r이라고 하면 1. a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이를 gcd(a, b) = gcd(b, r)과 같이 나타낼 수 있다. 2. gcd(a, 0) = a이다. 만약 두 수를 15와 9라고 두자. 그럼 다음과 같이 전개할 수 있다. gcd(15, 9) = gcd(9, 6) = gcd(6, 3) = gcd(3, 0) = 3 15와 9의 최대공약수인 3을 구할 수 있다. 그렇다면 이번에는 위 알고리즘을 코드로 구현해보자. 여기..