분류 전체보기

    N개의 최소공배수→연쇄법칙★ + if not stack: 스택이 비어있다면

    나의 풀이 import math def gcd(a, b): """ 이 함수는 주어진 두 숫자 a, b의 최대공약수(GCD)를 계산합니다. """ for i in range(min(a, b), 0, -1): if a % i == 0 and b % i == 0: return i def lcm(a, b): """ 이 함수는 주어진 두 숫자 a, b의 최소공배수(LCM)를 계산합니다. """ return int( a * b /gcd(a, b)) def solution(arr): """ 이 함수는 주어진 리스트 arr의 모든 요소들의 LCM을 계산합니다. """ stack = [] # 리스트의 각 요소를 순회합니다. for element in arr: # 스택이 비어 있으면 요소를 스택에 추가합니다. if not..

    N개의 최소 공배수→ 연쇄 법칙 (겹치지X) + stack이용

    나의 풀이 import java.util.*; class Solution { public static int gcd(int a, int b) { for (int i = Math.min(a, b); i > 0; i--) { if (a % i == 0 && b % i == 0) { return i; } } return 1; } public static int lcm(int a, int b) { return a * b / gcd(a, b); } public static int solution(int[] arr) { Stack stack = new Stack(); for (int element : arr) { if (stack.isEmpty()) { stack.push(element); } else { stac..

    최대공약수 구하기★★

    최대공약수와 최소공배수의 성질을 이용하면 쉽게 구할 수 있습니다. GCD = 최대공약수 LCM = 최소공배수 두 수 (a, b)의 최송공배수는 어떻게 구하는가? a x b = GCD * LCM입니다. #통상적인 방법 def gcd(a, b): for i in range(min(a, b), 0, -1): if a % i == 0 and b % i == 0: return i min(a,b)를 통해서 작은 수를 catch한 다음 작은 수부터 아래로 searching한다. [유클리드 호제법] 두 수 a, b가 있을 때 (a > b) a % b == 0이면 b가 GCD입니다. a % b != 0이면 (c = a % b라고 할 때) b % c를 구해서 0이 나올때까지 반복합니다. ex) 10, 12의 최대공약수는?..

    구명보트→ 침몰하는 타이타닉(그리디)★★

    나의 풀이 import java.util.*; class Solution { public int solution(int[] people, int limit) { Arrays.sort(people); int cnt=0; int left=0; int right= people.length-1; while(left