no image
[논문 리뷰] Neural Collaborative Filtering
1. 등장 배경 기존 collaborative filtering(협업 필터링)에서 활용되는 Matrix Factorization은 유저 - 아이템 행렬을 각각 유저, 아이템 임베딩으로 분해한 뒤 이를 해당 유저와 아이템의 look-up table로 삼는다. 이 경우 유저 - 아이템 행렬의 예측 값을 dot product로 구할 수 있으며 $M{\times}N$ 행렬을 $M{\times}K$, $K{\times}N$로 분해할 수 있다. 하지만 dot product는 linear한 연산이면서 동시에 모든 차원의 가중치를 동일하게 생각하기 때문에 복잡한 유저 - 아이템 행렬을 표현하기엔 충분하지 않다. 실제로 dot product가 활용될 latent space의 상황을 가정해보자. $u_4$의 경우 유저 -..
2022.04.14
no image
[파이썬] 백준 10989번 수 정렬하기 3
10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 시간 제한 5초 메모리 제한 8MB 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 10 5 2 3 1 4 2 3 5 1 7 예제 출력 1 1 1 2 2 3 3 4 5 5 7 나의 풀..
2022.04.13
no image
[파이썬] 백준 1436번 영화감독 숌
1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 시간 제한 2초 메모리 제한 128mb 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화..
2022.04.12
no image
[파이썬] 백준 1018번 체스판 다시 칠하기
1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 시간, 메모리 제한 2초, 128mb 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 ..
2022.04.11
no image
목적 함수(Objective function)와 최적화(Optimization)
목적 함수란? 머신러닝 모델의 평가지표는 손실(Loss)함수, 비용(Cost)함수, 목적(Objective) 함수 등 다양한 이름으로 불림 손실, 비용, 목적 함수의 명칭에 대해선 정확한 정의는 없지만 일반적으로 다음과 같이 생각하면 편함 A loss function is a part of a cost function which is a type of an objective function. 출처 결국 머신러닝 모델은 손실, 비용 함수는 줄이려고(minimise) 하며 목적 함수는 최적화(optimise)하려고 함 최적화하고 싶은 목적 함수는 최적의 모델을 확률 관점에서 볼 지 error 최소화 관점에서 볼 지에 따라서 다름 확률 관점에선 목적 함수를 최대화하고 싶어하고(Maximum Likelihood..
2022.04.10
no image
[파이썬] 백준 2231번 분해합
문제 확인 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 시간 제한 : 2초 메모리 제한 : 192MB 나의 풀이 시간 제한, 메모리 제한이 충분하다고 판단하여 분해합 미리 구해서 dict 구성했다. 이후 dict을 확인해서 N에 해당하는 분해합을 반환하는 방식으로 구현했다. 분해합을 미리 구해서 dict를 구성하면 메모리 낭비가 심함 # 분해합 저장 decompose_sum = {} for i in range(1, 10**6 + 1): sum = i for j in str(i)..
2022.04.09
no image
[파이썬] 백준 11729번 하노이 탑 이동 순서
11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 ..
2022.04.07
no image
2중 공유기 WOL/DDNS 설정
WOL이란? WOL(Wake On Lan)은 문자 그대로 Lan(인터넷)을 통해 PC를 부팅시킬 수 있는 기능이다. 원격 접속할 PC를 부팅하는데 활용할 수 있다. PC의 메인보드와 공유기 모두가 WOL을 지원해야지만 사용할 수 있는 기능인데, 다행히 대부분의 제품에서 지원하고 있다. WOL은 Magic Packet(매직 패킷)이라는 프레임을 통해 원하는 PC를 부팅시킬 수 있다. 이를 위해선 부팅하고 싶은 PC의 고유 주소를 프레임의 목적지로 제공해야 한다. 이때 활용되는 고유 주소가 바로 MAC이며 랜카드(NIC)에 귀속되는 고유한 값이다. 매직 패킷은 공유기 내 모든 통신 장비에 전달되고 이를 랜카드가 확인하면 PC를 부팅한다. 매직 패킷은 위 그림과 같이 FF FF FF FF FF FF에다 추가로..
2022.04.06
no image
[파이썬] 백준 2447번 별 찍기 - 10
2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제..
2022.04.05
no image
[파이썬] 백준 9020번 골드바흐의 추측
9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이..
2022.04.02
no image
Hugging Face load_metric의 상관계수 측정 오류
from datasets import load_metricpearsonr= load_metric('pearsonr')spearmanr = load_metric('spearmanr')Hugging Face의 datasets 중 load_metric은 metric을 간단히 계산할 수 있도록 도와주는 유용한 함수이다. 하지만 현재(2022.03.29) load_metric을 활용해서 상관계수(pearsonr, spearmanr)를 계산할 경우, 잘못된 값을 얻을 수도 있으니 주의해야 한다. load_metric은 일반적으로 scipy.stats.pearsonr 처럼 미리 구현된 metric 함수에 예측 값과 Label 값을 전달하는 방식으로 값을 계산한다. 문제는 상관계수를 측정할 때, 유사도 예측 값과 La..
2022.03.29
no image
[파이썬] 백준 2775번 부녀회장이 될테야
2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 ..
2022.03.29