Python 78

[프로그래머스] 키패드 누르기 - Python

이번 문제는 2020년 카카오 인턴 코딩 테스트에 나온 문제다. num2key는 번호를 누르면 해당 좌표로 변환하는 코드를 의미한다. 1~9까지는 수식으로 정의하였고, 0의 경우 (3,1) 좌표를 리턴하는 형태로 지정했다. [1, 4, 7]에 해당하는 키패드는 왼손으로 먼저 클릭하고, [3, 6, 9]에 해당하는 키패드는 오른손으로 먼저 클릭해야 하기 때문에, [2, 5, 8, 0]에 해당하는 값만 잘 설정하면 된다. [2, 5, 8, 0]에서는 왼손과 오른손의 현재 위치에 따라 달리 클릭되기 때문에 클릭될 때마다 좌표값을 받아서 왼손 혹은 오른손의 좌표를 기억하고, 만약 같은 경우 두 값의 차이를 바탕으로 어느 손으로 클릭할 지 처리할 수 있다. 만약 두 값의 차이가 같다면, 왼손 잡이인지 오른손 잡이..

Python/Algorithm 2023.08.24

[프로그래머스] 성격 유형 검사 - Python

해당 문제는 2022년 카카오 코딩 테스트에 나온 문제다. 내가 접근한 방식은 먼저 각 index를 저장하는 리스트와 딕셔너리를 생성하고, survey를 입력으로 받아서 분류하는 형태로 진행하였다. def solution(survey, choices): types = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'] answers = [0] * len(types) results = {t:i for i, t in enumerate(types)} for s, value in zip(survey, choices): a, b = s if value >= 4: answers[results[b]] += value - 4 else: answers[results[a]] += 4 - value o..

Python/Algorithm 2023.08.24

[프로그래머스] 공원 산책 - Python

공원 산책과 같은 문제는 종종 코테에 나오는 것 같아서 리뷰를 할 예정이다. 구구절절 문제가 길어보지만, 조건문을 달아서 쉽게 풀이할 수 있다. 먼저, S, O, X로 된 입력 문장을 풀이하기 쉽게 숫자로 변환하는 과정이 필요하다. X는 1로 설정하고, S, O는 0으로 설정하면 아래와 같이 코딩할 수 있다. def solution(park, routes): nrow, ncol = len(park)-1, len(park[0])-1 coord = [] for i in range(nrow+1): rows = [] for j in range(ncol+1): idx = park[i][j] if idx == 'S': row, col = i, j rows.append(0) elif idx == 'X': rows.a..

Python/Algorithm 2023.08.24

[프로그래머스] 달리기 경주 - Python

문제를 살펴보면 단순히 역전한 결과를 스왑(swap)하면 되지 않을까 라고 생각해서, list를 이용하여 아래와 같이 문제를 풀어보았다. # 시간초과 def solution(players, callings): for calls in callings: idx = players.index(calls) values = players.pop(idx) players.insert(idx-1, values) return players def solution(players, callings): for calls in callings: idx = players.index(calls) players[idx-1], players[idx] = players[idx], players[idx-1] return players Ru..

Python/Algorithm 2023.08.24

[OpenCV] Image Cropping

데이터 증강(Data Augmentation)을 위해 이미지를 자를 수도 있고, 특정 영역에 대한 바운딩 박스(Bounding Box)를 가지고 오기 위해 이미지를 자를 수 있다. 이때 가장 간단한 방법은 Height과 Width를 지정해서 해당 범위에 대한 영역만 잘라오는 것이다. def cropping(img, x, y, h=16, w=16): H, W, C = img.shape w_start = np.min([x, 0]) w_end = np.min([x+w, W]) h_start = np.min([y, 0]) h_end = np.min([y+h, H]) cropped_img = img[h_start:h_end, w_start:w_end].copy() return cropped_img def load..

Python/OpenCV 2023.07.06

[OpenCV] Image Registration Processing

Image Registration은 동일한 장면의 서로 다른 이미지를 정렬하는데 사용하는 기술 중 하나이다. 고정된 이미지(Fixed Image)가 있고, 움직인 이미지가 있다면, 움직인 이미지를 고정된 위치로 옮기는 것을 말한다. 이미지가 회전되어 있거나, 일부 잘려있거나 할 때도 사용이 가능하다. Image Registration을 수행하기 위해 MVTec AD Dataset을 예시로 가지고 왔다. import os, sys, cv2, glob import matplotlib.pyplot as plt paths = glob.glob(os.path.join('dataset/hazelnut/train/good/*.png')) path = paths[0] imgs = cv2.imread(path) imgs..

Python/OpenCV 2023.07.05

[Pytorch] pytorch에서 value count 하는 법

Pandas 내에는 value_count() 라는 함수를 통해 데이터 프레임 내의 값을 카운팅 할 수 있다. Numpy 에서는 collection.Counter 등의 함수를 이용하여 몇 개가 있는지를 확인할 수 있다. Pytorch에서는 bincount라는 함수로 대체할 수 있다. import torch samples = torch.tensor([1, 1, 2, 1, 3, 3, 3], dtype=torch.long) torch.bincount(samples) # tensor([0, 3, 1, 3]) samples.dtype # torch.int64 당연하게도, LongTensor 인 경우에만 가능하다. FloatTensor의 경우 갯수를 확인하는 것이 불가능하기 때문에, LongTensor로 제대로 데이..

Python/Pytorch 2023.06.30

[Pytorch] Neural Graph Collaborative Filtering (NGCF) 구현하기

Contents Neural Graph Collaborative Filtering (NGCF)는 기존의 협업 필터링(Collaborative Filtering)이 고차-연결성(High-Order Connectivity)을 고려하지 못한다는 단점을 극복하고자 그래프를 협업 필터링에 도입 시킨 기법이다. 전통적인 협업 필터링은 user-item interaction만을 고려하게 된다. 대표적인 Neural Collaborative Filtering (NCF)를 생각해보면 사용자 ID와 제품 ID를 내적하거나 연결(Concatenate)하여 사용자의 제품에 대한 구매 확률을 도출한다. 그렇기 때문에 제품과 다른 사용자 간의 관계 즉, 고차-연결성을 고려하지 못한다는 것이다. 예를 들어 $u_1 \leftarr..

Python/Pytorch 2023.01.01

[Pytorch] Transformer 구현하기

Contents Transformer는 자연어 처리(Natural Language Processing, NLP) 분야에서 성능이 우수한 것으로 검증된 대표적인 Self-Attention 모델이다. 기존 Sequential Based 모델인 RNN, LSTM, GRU 등과 같은 모델에 비해 매우 우수한 성능을 보여주고 있으며, BERT, GPT 등의 사전 학습 기반 모델이 Transformer의 골조를 활용하였다. 이번 글에서는 Transformer의 Encoder와 Decoder가 어떻게 구성되어 있는지 짧은 코드를 통해 알아보자. Import Package Transformer는 HuggingFace 에서 지원하는 transformers 패키지와 PyTorch를 이용하여 구현할 것이다. 따라서, 구현에..

Python/Pytorch 2022.12.20
반응형