프로그래머스(파이썬)/LV.2(파이썬)
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..
구명보트→ 침몰하는 타이타닉(그리디)★★
나의 풀이 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
끝말잇기→인덱스 순환 +stack사용해서 중복체크, index+1은 사람번호, 인덱스 별도 저장★★+ turn//n+1
나의 풀이 def solution(n, words): check_list=[0]*(n) #체크리스트의 index+1은 사람의 번호를 의미한다. #체크리스트의 value는 각 사람의 "차례"를 의미한다. check_list[0]=1 stack=[words[0]] for i in range(1, len(words)): if words[i-1][-1] == words[i][0]: stack.append(words[i]) check_list[i%n]+=1 if stack.count(words[i])== 2: return [(i%n)+1, check_list[i%n]] else: check_list[i%n]+=1 return [(i%n)+1, check_list[i%n]] #끝말잇기가 정상적으로 종료된 경우 el..
짝지어 제거하기→크레인 인형 뽑기와 유사★★
짝지어 제거하기 def solution(s): stack=[] s=list(s) for i in range(len(s)): stack.append(s[i]) if len(stack)>=2: if stack[-1]==stack[-2]: stack.pop() stack.pop() if len(stack)==0: return 1 else: return 0 ▶ stack의 구조를 이용한다.