728x90
SMALL
- 오늘은 코딩 테스트에서 꼭 알아야 하는 유형 중 하나인 'Math'에 대해 이야기해보려 합니다. 수학은 다양한 문제 해결과정에서 필요한 개념과 연산을 제공하며, 코딩 테스트에서도 자주 출제되는 유형 중 하나입니다. 수학적인 사고력과 논리적인 접근이 요구되며, 정확하고 효율적인 코드 작성 능력을 요구합니다.
코딩 테스트에서의 수학 문제 접근법
- 수학은 숫자, 연산, 패턴 등을 다루는 학문으로, 다양한 분야와 응용 범위를 가지고 있습니다. 코딩 테스트에서 자주 사용되는 수학적 개념들은 아래와 같습니다.
- 기본 연산: 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈) 및 거듭제곱 등의 기본 연산을 이해하고 활용할 수 있어야 합니다.
- 최대 공약수와 최소 공배수: 주어진 숫자들의 최대 공약수(GCD)와 최소 공배수(LCM)를 구하는 방법을 알아야 합니다.
- 소수와 소인수분해: 소수를 판별하고 주어진 숫자를 소인수분해하는 방법을 이해하고 활용할 수 있어야 합니다.
- 조합과 순열: 조합(Combination)과 순열(Permutation) 개념을 이해하여 문제에 적용할 수 있어야 합니다.
- 확률과 조건부 확률: 주어진 상황에서 발생할 확률이나 조건부 확률을 계산하는 방법을 알아야 합니다.
- 코딩 테스트에서 수학 유형의 문제를 해결하기 위해서는 아래와 같은 접근법을 활용할 수 있습니다.
- 문제 파악하기: 주어진 문제 상황과 요구사항을 정확히 파악합니다.
- 추상화 및 모델링: 문제를 수식이나 그래프 등으로 변환하여 추상화하고 모델링합니다.
- 문제 해결 계획: 문제를 해결하기 위한 계획을 세웁니다. 수학적인 개념과 연산을 활용하여 원하는 결과를 얻기 위한 접근 방법을 결정합니다.
- 수식 또는 알고리즘 설계: 수학적인 개념이나 연산을 코드로 구현하기 위해 수식 또는 알고리즘을 설계합니다. 필요한 변수, 반복문, 조건문 등을 고려하여 코드를 작성합니다.
- 코드 작성: 설계된 수식이나 알고리즘에 따라 코드를 작성합니다. 변수명과 함수명은 의미가 명확하게 전달되도록 지정하며 가독성이 좋도록 코드 스타일에 신경씁니다.
- 테스트 및 디버깅: 작성된 코드가 예시 입력과 출력에 맞게 동작하는지 테스트해보고 디버깅하여 오류가 있는지 확인합니다.
- 시간 복잡도 분석: 작성된 코드의 시간 복잡도와 공간 복잡도를 분석하여 성능 면에서 최적화할 수 있는 부분이 있는지 검토합니다.
1712번: 손익분기점
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와
www.acmicpc.net
문제
- 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.
- 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.
- 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(Break-Even Point)이라고 한다.
- A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.
해결 방법
- 손익분기점을 단순한 수식으로 표현할 수 있습니다. 고정 비용 A와 가변 비용 B 그리고 판매 가격 C가 주어졌을 때, 수익이 발생하기 시작하는 판매량을 x로 놓고 다음과 같은 수식을 세울 수 있습니다.
A + B * x < C * x
- 여기서 x를 구하는 것이 목표이므로, 식을 정리해 봅니다.
x > A / (C - B)
A, B, C = map(int, input().split())
if B >= C:
print(-1)
else:
print(A // (C - B) + 1)
- 손익분기점은 고정비용(A), 가변비용(B), 판매가격(C)이 주어질 때 생산량이 어느 정도 될 경우 비용과 판매금액이 같아지는 지점을 의미합니다. 이 때 소득(Cx) - 비용(A + Bx) > 0 을 만족하는 x의 최소값을 찾으면 됩니다.
- 하지만 가변비용(B)가 판매가격(C)보다 크거나 같으면 소득이 발생할 가능성이 없으므로 -1을 출력하게 됩니다.
9613번: GCD 합
첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진
www.acmicpc.net
문제
- 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD(최대공약수)의 합을 구하는 프로그램을 작성하시오.
해결 방법
- 이 문제를 해결하기 위해서는 최대공약수를 구하는 방법을 알아야 합니다. 최대공약수를 구하는 방법 중 가장 잘 알려진 알고리즘은 유클리드 호제법입니다. 유클리드 호제법을 사용하여 두 수의 최대공약수를 구하면 됩니다.
- 유클리드 호제법은 다음과 같은 점화식을 따릅니다.
gcd(a, b) = gcd(b, a % b)
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
def gcd_sum(num_list):
result = 0
for i in range(len(num_list)):
for j in range(i + 1, len(num_list)):
result += gcd(num_list[i], num_list[j])
return result
# 입력 및 출력
test_case = int(input())
for _ in range(test_case):
nums = list(map(int, input().split()))[1:]
print(gcd_sum(nums))
- GCD 합 문제에서는 최대공약수를 구하는 유클리드 호제법을 활용해야 합니다. 이를 이용하면 주어진 수들의 모든 쌍에 대한 최대공약수의 합을 효율적으로 구할 수 있습니다.
- 코딩 테스트에서 수학 문제는 복잡해 보일 수 있지만, 필요한 개념을 정확히 파악하고 적절한 접근 방법을 사용한다면 충분히 해결할 수 있습니다. 주어진 문제 상황을 잘 이해하고, 그에 맞는 수학적 개념과 공식을 연결짓는 것이 중요합니다.
- 특히나 알고리즘 문제 해결에서는 단순 계산능력뿐만 아니라, 효율적인 계산 방법 및 최적화 등도 중요하기 때문에 다양한 수학적 지식과 그 활용능력이 요구됩니다.
728x90
LIST
'알고리즘 > 코딩테스트 알고리즘' 카테고리의 다른 글
꼭 알아야하는 코딩 테스트 유형: 6) #Greedy (0) | 2023.08.24 |
---|---|
꼭 알아야하는 코딩 테스트 유형: 5) #String (0) | 2023.08.23 |
꼭 알아야하는 코딩 테스트 유형: 4) #Graphs (0) | 2023.08.23 |
꼭 알아야하는 코딩 테스트 유형: 3) #Dynamic_Programming (0) | 2023.08.23 |
꼭 알아야하는 코딩 테스트 유형: 2) #Implementation (0) | 2023.08.23 |