코딩테스트
[level 2] N개의 최소공배수 - 12953
해당 문제를 풀기 위해 이번엔 최대공약수와 최소공배수를 구하는 로직을 찾아보았습니다.
유클리드 호제법이라는 방법을 알게 되었습니다.
1071과 1029의 최대공약수를 유클리드 호제법을 통해 구해보자.
- 1071을 1029로 나눈 나머지 → 42
- 1029를 42로 나눈 나머지 → 21
- 42를 21로 나눈 나머지 → 0
- (1071, 1029) = (21, 0) = 21
- 따라서 최대공약수는 21
최소공배수는
두 수를 곱하고 최대공약수로 나누면 된다!
[level 2] N개의 최소공배수 - 12953 풀이코드
더보기
#include <bits/stdc++.h>
using namespace std;
// 유클리드 호제법을 사용한 최대공약수 구하기
int gcd(int a, int b)
{
if (b == 0) return a;
else return gcd(b, a % b);
}
int solution(vector<int> arr) {
int answer = 0;
sort(arr.begin(), arr.end(), greater<int>());
answer = arr[0];
for (int i = 1; i < arr.size(); i++)
{
// 최소공배수 = 두 수의 곱 / 두 수의 최대공약수
answer = (answer * arr[i]) / gcd(answer, arr[i]);
}
return answer;
}
월드 리소스 최적화
- 레벨 스트리밍 시스템 (Level Streaming System) 테스트로 적용
- 오큘루전 컬링, 프러스트럼 컬링 → 이상하게 테스트 맵에서는 잘 적용이 되는데 외부 에셋은 적용이 안되고 있다.
아래는 간단하게 테스트해본 레벨 스트리밍 시스템입니다.