본문 바로가기

Study77

제곱수 수학에서 정사각수(正四角數, square number) 또는 제곱수(-數) 또는 완전제곱수(完全-數, perfect square number)는 어떤 자연수의 제곱이 되는 수이다. 음이 아닌 정수 n에 대하여 n^2의 꼴로 나타낼 수 있는 수를 정사각수라고 한다. 모든 정사각수는 홀수개의 약수를 가진다. [출처] 위키백과 - 정사각수 * 관련 문제: - [백준] 13909번: 창문 닫기 2023. 6. 24.
기약분수 기약분수(Irreducible Fraction)는 분자와 분모의 공약수 (Greatest Common Factor, GCF)가 1뿐이어서 더이상 약분되지 않는 분수이다. 분자와 분모를 1 이외의 공통된 약수로 나누는 행위를 약분(Reduction of a fraction) 이라고 한다. 정수 a,b에 대해, 분수 a/b가 기약분수라는 것과, a,b가 서로소 즉, 최대공약수가 1이라는 것은 같은 의미이다. [출처] 위키백과 - 기약분수 기약분수는 분모와 분자의 최대공약수를 구한 뒤 분모와 분자에 각각 나눠주면 된다. (예) 분모: 120, 분자: 90 == 최대공약수: 30 → 분모: 4, 분자: 3 이 때, 최대 공약수를 구하는 방법에는 유클리드 호제법 등이 있다. * 연관 문제: - [백준] 1735번.. 2023. 6. 20.
유클리드 호제법 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 입력으로 두 수 m,n(m>n)이 들어온다. n이 0이라면, m을 출력하고 알고리즘을 종료한다. m이 n으로 나.. 2023. 6. 19.
벡터 (vector) 벡터(std::vector)는 동적 배열 구조를 C++로 구현한 것이다. 이것은 C의 배열(빠른 랜덤 접근이 가능한)처럼 행동하지만 자동으로 배열의 크기 조절과 객체의 추가와 삭제가 가능하다. 벡터는 C++ 표준 템플릿 라이브러리 중의 하나인 템플릿 클래스이다. 어떤 타입이라도 저장할 수 있지만, 한 번에 한 타입만 저장이 가능하다. 요소에 접근하거나, 앞 또는 뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알 수 있는 멤버 함수를 제공하고 있다. C++의 배열은 메모리에서 연속적이다. 이것은 하나의 타입을 가지는 블록이 여러 개가 붙어 있는 것처럼 생각할 수 있다. 배열의 모든 요소는 같은 타입을 가져야만 한다. 벡터는 배열과 비슷하지만 확장된 기능을 가지고 있다. 벡터의 특징 중 하나는 at()이란 .. 2023. 6. 17.
연산자 프로그래밍 언어는 일반적으로 수학 연산과 유사한 연산자의 집합을 지원한다. 언어는 내장된 연산자의 정해진 숫자를 포함할 수 있다 (C와 C++에서 + - * = 연산자의 경우), 아니면 프로그래머가 정의한 연산자의 생성을 허용할 수 있다 (하스켈의 경우). 일부 프로그래밍 언어는 다른 div와 같은 이름도 허용하는 동안 특수 문자 + 또는 :=과 같은 연산자 기호를 제한한다 (파스칼의 경우). 언어의 사양은 우선순위와 그것이 지원하는 연산자의 결합법칙을 지정한다. 프로그래머가 정의된 연산자를 지원하는 언어는 새로운 연산자의 기호 (예: 프롤로그)의 우선순위와 결합법칙의 사양이 필요하다. 대부분의 프로그래밍 언어 연산자는 몇몇 많은 피연산자 (예: C에서 ?: 연산자) 지원과 함께, 하나 또는 두 개의 피.. 2023. 6. 15.