반응형

알고리즘 20

코딩 테스트 대비! 파이썬으로 "세 수의 합" 문제 풀이

파이썬으로 "세 수의 합" 문제 풀이 문제 설명 정수 배열 nums가 주어졌을 때, 합이 0이 되는 세 정수의 삼중쌍을 모두 찾아 리스트 형태로 반환하는 프로그램을 작성하세요. 제약 조건 - 3 ≤ nums.length ≤ 3000 - -105 ≤ nums[i] ≤ 105 예시 입출력 - nums = [-1,0,1,2,-1,-4] → [[-1,-1,2],[-1,0,1]] - nums = [] → [] - nums = [0] → [] 솔루션 코드 def three_sum(nums): res = [] nums.sort() # 정렬 for i in range(len(nums)-2): # 중복 건너뛰기 if i > 0 and nums[i] == nums[i-1]: continue left, right = i+1..

코딩 테스트 대비! 파이썬으로 "두 정렬 리스트의 병합" 문제 풀이

파이썬으로 "두 정렬 리스트의 병합" 문제 풀이 문제 설명 정렬된 연결 리스트 l1과 l2가 주어졌을 때, 이 두 리스트를 병합하여 정렬된 새 연결 리스트를 반환하는 프로그램을 작성하세요. 제약 조건 - 두 리스트의 노드 수는 0 이상 50 이하입니다. - -1,000 ≤ Node.val ≤ 1,000 예시 입출력 - l1 = [1,2,4], l2 = [1,3,4] → [1,1,2,3,4,4] - l1 = [], l2 = [] → [] - l1 = [], l2 = [0] → [0] 솔루션 코드 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def merge_sorted_lists(l1, l2): d..

코딩 테스트 대비! 파이썬으로 "유효한 팰린드롬(회문 - 뒤에서 부터 읽어도 똑같은 문자)" 문제 풀이

파이썬으로 "유효한 팰린드롬" 문제 풀이 문제 설명 영문 문자와 숫자로만 이루어진 문자열 s가 주어졌을 때, 대소문자를 구분하지 않고 알파벳과 숫자만 고려했을 때 s가 팰린드롬이면 True, 아니면 False를 출력하는 프로그램을 작성하세요. 제약 조건 - 1

코딩 테스트 대비! 리스트 뒤집기 - 파이썬으로 "배열 뒤집기" 문제 풀이

리스트 뒤집기 - 파이썬으로 "배열 뒤집기" 문제 풀이 문제 설명 정수가 담긴 리스트 nums가 주어지면, 이를 역순으로 뒤집어 출력하는 프로그램을 작성하세요. 제약 조건 - 1 ≤ nums의 길이 ≤ 100 - -100 ≤ nums[i] ≤ 100 예시 입출력 - nums = [1, 2, 3] → [3, 2, 1] - nums = [4, 3, 5, 1, 2] → [2, 1, 5, 3, 4] 솔루션 코드 def reverse_list(nums): start = 0 end = len(nums) - 1 while start < end: nums[start], nums[end] = nums[end], nums[start] start += 1 end -= 1 return nums # 테스트 print(rever..

코딩 테스트 대비! 파이썬으로 "두 수의 합" 알고리즘 문제 풀이

코딩 테스트 대비! 파이썬으로 "두 수의 합" 알고리즘 문제 풀이 이번에 소개할 알고리즘 문제는 "두 수의 합"입니다. 정렬된 배열과 타겟 숫자가 주어졌을 때, 배열 내 두 수의 합이 타겟 숫자가 되는 인덱스 pair를 찾는 문제입니다. 문제 설명 정수 배열 nums와 정수 target이 주어질 때, nums에 있는 두 개의 인덱스를 찾아 nums[i] + nums[j] == target이 되는 값을 출력하라. 제약 조건 - 2 ≤ nums.length ≤ 104 - -109 ≤ nums[i] ≤ 109 - -109 ≤ target ≤ 109 - 정확히 하나의 솔루션만 존재함 예시 입출력 - nums = [2,7,11,15], target = 9 → [0,1] - nums = [3,2,4], target..

추천 시스템(상품 연관도 / 유사도)

상품간의 연관도와 유사도를 파악하기 위해서는 추천 시스템을 구축하는 것이 좋습니다. 추천 시스템은 사용자가 선호하는 아이템을 예측하고 추천하는 시스템으로, 일반적으로 Collaborative Filtering, Content-Based Filtering, Hybrid Filtering 등의 방법이 사용됩니다. 먼저 Collaborative Filtering은 사용자들의 과거 구매 기록이나 선호도를 바탕으로 비슷한 취향을 가진 사용자끼리 그룹을 지어 추천하는 방법입니다. 이 방법은 사용자 간의 유사도 측정을 위해 Cosine Similarity, Pearson Correlation 등의 알고리즘이 사용됩니다. 두 번째 Content-Based Filtering은 상품의 특징을 분석하여 사용자의 선호도와 일..

대세 추천 알고리즘 밴딧 알고리즘(Bandit Algorithm)의 개념

밴딧 알고리즘 개념 밴딧 알고리즘(Bandit Algorithm)은 기계 학습의 분야 중 하나로, 이산적인 선택들 중 어떤 선택이 가장 좋은 보상을 가져올지를 찾는 문제를 해결하는 알고리즘입니다. 밴딧 알고리즘은 매 시도마다 일정한 보상을 제공하는 슬롯 머신(Slot Machine)이라는 가상의 기계에서부터 시작합니다. 이 슬롯 머신은 여러 개의 손잡이 중에서 하나를 선택하면 그에 따라 일정한 확률로 보상을 줍니다. 밴딧 알고리즘은 이 슬롯 머신에서 가장 좋은 보상을 가져올 손잡이를 찾는 문제를 푸는 것입니다. 이를 위해서는 일단 여러 가지 손잡이 중 하나를 무작위로 선택하여 보상을 받고, 이를 이용해 손잡이마다의 보상 기대값을 추정합니다. 추정한 보상 기대값을 바탕으로 보상 기대값이 가장 높은 손잡이를..

bagging과 boosting 알고리즘의 차이점

Bagging과 Boosting은 모두 앙상블(Ensemble) 기법으로, 여러 개의 모델을 결합하여 더 나은 성능을 내는 방법입니다. 그러나 이 두 알고리즘은 차이가 있습니다. Bagging (Bootstrap Aggregating)은 각각의 모델이 독립적으로 학습하고 예측합니다. 이를 위해 데이터셋을 여러 부분집합으로 나누어 각 모델이 부분집합에 대해 학습하고, 각 모델의 예측 결과를 평균 또는 다수결 등으로 결합합니다. Bagging은 모델 간의 상관관계를 줄이기 때문에 과적합(Overfitting)을 줄일 수 있으며, 예측 성능이 안정적입니다. 대표적인 Bagging 알고리즘으로는 랜덤 포레스트(Random Forest)가 있습니다. Boosting은 각 모델이 이전 모델이 잘못 예측한 샘플에 가..

728x90
반응형