>알고리즘 문제
1. 문제
문제 설명
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항- arr은 길이 1이상, 15이하인 배열입니다.
- arr의 원소는 100 이하인 자연수입니다.
2. 솔루션
class Solution {
fun solution(arr: IntArray): Int {
var answer = 1
for(i in arr){
answer=lcm(answer,i)
}
return answer
}
fun gcd(a:Int, b:Int):Int{
if (b == 0) {
return a
}
return gcd(b, a % b)
}
fun lcm(a:Int, b:Int):Int{
var gcd=gcd(a,b)
return (a*b)/gcd
}
}
-유클리드 호제법으로 gcd구하는 함수를 재귀형식으로 만들음
-a,b의 최소공배수는 (a*b)/gcd(a,b)임을 이용해 lcm구하는 함수를 만들음
-앞에서 부터 두개씩 lcm을 구하는 방식으로 풀음
>복습
1. 배열 생성-특정값이나 인덱스 기준으로
=>자료형Array(길이){특정값 or 인덱스 it으로 이루어진 표현식}
2. 스택, 큐, 덱: 되도록이면 ArrayDeque이용하기
3. repeat(숫자){본문}:본문을 숫자만큼 반복
4.forEachIndexed{ idx, value -> 본문}: 컬렉션 다룰때 인덱스와 값으로 각각에 연산하고자 할 시 사용
>개인과제(키오스크)
https://appdevelopjava.tistory.com/29
'코틀린-안드로이드' 카테고리의 다른 글
24일차)알고리즘 문제(고고학 최고의 발견, n + 1 카드게임, 귤 고르기, 괄호 회전하기) (1) | 2024.06.16 |
---|---|
23일차)알고리즘 문제(멀리 뛰기, 에어컨, 아방가르드 타일링, 숫자 타자 대회) (1) | 2024.06.14 |
21일차)알고리즘 문제(예상 대진표), 복습 및 과제 피드 (0) | 2024.06.12 |
20일차)알고리즘 문제(카펫, 행렬과 연산, 올바른 괄호의 갯수, 무지의 먹방 라이브), 복습(추상 클래스와 인터페이스) (3) | 2024.06.11 |
19일차)알고리즘 문제(피보나치 수/ 1, 2, 3 떨어트리기), 계산기 과제 보충&특강 (0) | 2024.06.10 |