Algorithm
-
그리디알고리즘(Greedy Algorithm)Algorithm/Algorithm_Theory 2022. 10. 22. 00:03
그리디 알고리즘이란?! 미래를 내다보지 않고, 당장 눈 앞에 보이는 최적의 선택을 하는 방식 A greedy algorithm is an approach for solving a problem by selecting the best option available at the moment. It doesn't worry whether the current best result will bring the overall optimal result. 장점 & 단점 장점: 간단하고 빠르다 단점: 최적의 답이 보장되지 않는다 When to use?! 다른 알고리즘 방법들이 너무 느릴 때 최적의 답이 필요 없을 때 feat.최적의 답을 구해주는 경우도 있다?! 1. 탐욕적 선택 속성(Greedy Choice Prop..
-
프로그래머스(Programmers) LEVEL1 - 소수만들기Algorithm/Problems_Solving 2022. 10. 13. 22:33
# 순서가 중요하지 않다 => 즉,서로 다른 인덱스만을 골고름 def is_prime(number): for i in range(2,number//2+1): if number % i == 0: # 소수가 아니다! (약수가있으니까) return False # else를 하지 않는 이유는 첫번째 i로 number를 나눴을 때 !=0 인경우(소수로판명), 하지만 두번째 i로 number를 나눴을 때 i ==0(소수아님으로판명)있을 수도 있기 때문에 for문 다 돌고나서 해줌 return True # 소수다! def solution(nums): result = [] for i in range(len(nums)): for j in range(i+1,len(nums)): for k in range(j+1, len(..
-
백준(BaekJoon) - 2501 약수구하기Algorithm/Problems_Solving 2022. 10. 10. 12:14
# 1st trial def func(n,k): result = [] for i in range(1,n+1): if n % i == 0: result.append(i) result.sort() if len(result) < k: return 0 return result[k-1] number, k = map(int, input().split()) func(number,k) # 2nd trial N, K = map(int, input().split()) result = 0 for i in range(1,N+1): if N % i == 0: K -= 1 if K == 0 : result = i break print(result) # 위의 식을 조만 변형해서?? N, K = map(int, input().spl..
-
브루트포스(BruteForce)Algorithm/Algorithm_Theory 2022. 10. 10. 11:36
가능한 모든 경우의 수를 구해보는 것(it is just like iterating every possibility available to solve that problem) 예를 들어, 4자리 비밀번호를 알아내려고 할 때(비밀번호는 0-9까지) 0001,0002,....9999까지 모든 경우의 수를 구하는 것을 말한다. 실습) # left_cards에서 하나, right_cards에서 하나를 뽑아 두 카드의 곱이 가장 클 때를 구하기 def max_product(left_cards, right_cards): # 코드를 작성하세요. max_number = 0 for i in range(len(left_cards)): for j in range(len(right_cards)): if left_cards[i..
-
백준(BaekJoon) 1924번 - 2007년Algorithm/Problems_Solving 2022. 10. 10. 11:13
# 처음에는 아래처럼.. 그냥 무식하게 하려고 했다.. 하다보니 이건 아닌듯 싶어서 quit def func(month, day): if month == 1 and day == 1 or month == 10: remainders = day % 7 if remainders == 0: return "Thurs" elif remainders == 1: return "Fri" elif remainders == 2: return "Sat" elif remainders == 3: return "Sun" elif remainders == 4: return "Mon" elif remainders == 5: return "Tue" elif remainders == 6: return "Wed" days_list = ["S..
-
프로그래머스(Programmers) LEVEL1 - 성격유형검사하기Algorithm/Problems_Solving 2022. 10. 9. 12:24
scores = {1:3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3} answer_report = {1: {"R":0, "T":0}, 2 :{"C":0, "F":0}, 3: {"J":0, "M":0}, 4: {"A":0, "N":0}, } def organization(answer): answer = {k : dict(sorted(v.items(), key=lambda x:(-x[1], x[0]))) for k, v in answer.items()} return "".join([list(v.keys())[0] for k, v in answer.items()]) def added_score(answer, result:dict) -> dict: for k, v in answer.items(): f..
-
프로그래머스(Programmers) LEVEL2 - 전화번호 목록Algorithm/Problems_Solving 2022. 10. 3. 10:58
# 1st def solution(phone_book): answer = True phone_book.sort(key=lambda x: len(x)) prefix = phone_book[0] # 이렇게 하면 안되는 이유가 만약에 prefix가 두번째 원소에는 해당되지 않고, 세번째 원소에 해당 되는 것이 있으면, 그래도 없는거로 해당이 되서 return이 끝난당 for ele in range(1,len(phone_book)): if prefix in phone_book[ele]: return False return True # return True의 위치만 for문을 다 끝내고 실행이 되도록 하자 def solution(phone_book): answer = True phone_book.sort(key=..
-
프로그래머스(Programmers) LEVEL2 - 위장Algorithm/Problems_Solving 2022. 10. 2. 12:39
def solution(clothes): dic= dict() for cloth in range(len(clothes)): if clothes[cloth][1] not in dic: dic[clothes[cloth][1]] = [clothes[cloth][0]] else: dic[clothes[cloth][1]].append(clothes[cloth][0]) val = len([item for values in dic.values() for item in values]) mul = 1 for v in dic.values(): mul = mul * len(v) if len(dic.keys()) == 1: return val else: return mul + val 정확성: 28.6 합계: 28.6 / 10..