알고리즘 338

[프로그래머스] 최대공약수와 최소공배수

우선 유클리드 호제법은 - 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나. 그리고 호제법이란 - 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. # 유클리드 호제법으로 작성한 첫 코드 def gcd(n,m): while m != False: n,m = m, n%m return n def lcm(n,m,x): return n*m//x def solution(n, m): x = gcd(n,m) return [x,lcm(n,m,x)] # 유클리드 호제법과 lambda를 사용한 코드 def solution(n, m): gcd = lambda a, b : b if not a%b else gcd(b,a%b) lcm = lambda a, b : a*b//gcd(a,b)..

알고리즘 2023.07.04

[프로그래머스] 단어 변환

# 해당 문제를 bfs로 풀었고 # 처음에는 bfs로 어떻게 접근해야하는지에 대한 고민을 많이 했다. # 그래서 dfs, bfs로 접근을 한다면 [ 변경되는 값, idx ]와 같은 걸 # 어떻게 문제에 반영할 수 있는지에 대해 생각해보기로 했다. from collections import deque def solution(begin, target, words): if target not in words: return 0 w_ln = len(words) que = deque([[begin,0]]) while True: b, idx = que.popleft() visit, flag = [0]*w_ln, False if b == target: break for i in range(w_ln): for j in ..

알고리즘 2023.06.30