본문 바로가기

분류 전체보기207

백준 5585번 거스름돈 문제 풀이 Python 문제 정의 거스름돈 문제 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오. 입력: 물건의 가격 출력: 최소 잔돈의 개수 문제 해석 가지고 있는 6종류의 잔돈을 사용하여, 거스름돈의 개수가 가장 적게 하는 해를 구해야 함. 가장 적게 하기 위해서는 큰 단위의 돈을 최대한으로, 작은 단위의 돈을 최소한으로 전달해야 함. 잔돈을 내림차순으로 정렬한 뒤, 거스름돈을 나눈 몫을 잔돈의 개수에 더하고, 나머지를 새로운 거스름돈으로 할당함. .. 2023. 8. 10.
선형 검색, 이진 검색의 시간 복잡도 Big-O 표기법에 따른 결론부터 말하면, 선형 검색은 O(n), 이진 검색은 O(logn)이다. 선형 검색의 시간 복잡도 따져보기 def linear_search(array, elem): for i, e in enumerate(array):#1 if elem == e:#2 return i#3 return -1#4 #1, 시간 복잡도 O(n), 실행 횟수 n/2 (평균적으로 n/2개에 대해 수행, n에 비례하여 시간복잡도가 O(n)이 됨) #2, 시간 복잡도 O(n), 실행 횟수 n/2 #3, 시간 복잡도 O(1), 실행 횟수 1 #4, 시간 복잡도 O(1), 실행 횟수 1 Big-O 표기법은 최댓값을 채택하므로, 선형 검색의 시간복잡도는 O(n)이다. 이진 검색의 시간 복잡도 따져보기 def binar.. 2023. 8. 10.
Implicit feedback 추천 모델 평가 방법 이해 (negative sampling, nDCG, HR) 이 글은 NCF 논문을 리뷰하며, implicit feedback 환경에서 item recommendation의 일반적인 평가 방법에 대해 알게 된 내용을 예제를 통해 풀어 재해석한 내용이다. NCF 논문의 4.1 Experimental Settings - Evaluation Protocols. 파트를 참고하여 작성하였으니, 원문을 읽고 싶다면 해당 부분을 참고하면 된다. NCF 논문 내 평가 방법론 해석 우선 논문(4.1 Experimental Settings - Evaluation Protocols.)에서 언급되는 내용을 약간의 번역+해석하면 아래와 같다. 1. leave-one-out evaluation 평가를 위해 일반적으로 아이템 추천에서 많이 사용되는 leave-one-out evaluatio.. 2023. 8. 9.
pandas index apply 안될 때에 (map 사용) pandas dataframe의 index에 apply를 적용하려고 하면 안된다고 한다 ㅠㅠ df_input.index.apply(lambda x: True if x % 1 == 0 else False) 아래와 같이 map으로 바꿔서 하면 된다! df_input.index.map(lambda x: True if x % 1 == 0 else False) 2023. 8. 7.
파이썬 멀티프로세싱 (Pool, starmap_async) negative sampling 하는데, 만여명이 넘는 유저에 대해서 for loop을 도니 속도가 매우*100000으로 느리다. htop을 찍어보니, single loop을 돌 때마다 활성화되는 CPU 코어는 한 개, 30개가 있으니까 모두 이용할 수 있도록 해보자. 목표 가지고 있는 코어를 최대로 활용하여 처리 속도를 줄인다. 방법 from multiprocessing import Pool def sample_negative(user_id): ''' 생략: 오래걸리는 작업 ''' return negative_samples # 기존 방식 train = [] for u in all_users: train.extend(sample_negative(u)) # 멀티프로세싱 적용 train = [] p = Po.. 2023. 8. 7.
파이토치 GPU 인식 확인하기 torch-gpu-test.py 파일을 생성하여 아래 내용을 복붙한다. import torch def main(): print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.cuda.device_count()) if __name__ == '__main__': main() 파이썬으로 위 프로그램을 실행하였을 때, 디바이스 이름과 개수가 의도한 바와 일치하면 된다. python torch-gpu-test.py True Tesla V100S-PCIE-32GB 2 2023. 7. 28.