no image
[파이썬] 프로그래머스 성격 유형 검사하기
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 우선 순위가 동일할 경우를 대비해 미리 알파벳 순으로 answer에 입력했다. def solution(survey, choices): # 미리 알파벳 순으로 정렬 answer = ["R", "C", "J", "A"] score = {"R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N": 0} for s, c in zip(survey, choices): if c 4: score[s[1]] += ..
2022.10.01
no image
[파이썬] 프로그래머스 신고 결과 받기
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 유저가 신고한 사용자 정보를 저장하는 대신, 유저를 신고한 사용자 정보를 저장했다. def solution(id_list, report, k): # 사용자를 신고한 유저 user_report = {} report = list(set(report)) # 신고 처리 for i in report: a, b = i.split(" ") # 신고 처리 if b not in user_report: user_report[b] = set() user_report[b].add(a) # 메일 개수 mail_cnt = ..
2022.10.01
no image
[파이썬] 프로그래머스 신규 아이디 추천
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 조건이 까다로워서 정규 표현식으로 풀었다. [ic]+[/ic], [ic]^[/ic], [ic]$[/ic] 등 패턴을 익히느라 풀이까지는 시간이 조금 걸렸다. import re def solution(new_id): # 대문자 -> 소문자 new_id = new_id.lower() # 허용되는 문자만 받아오기 new_id = re.sub(r"[^0-9a-z-_.]", "", new_id) # .는 그대로 쓰면 문자 전체가 됨 new_id = re.sub(r"[.]+", ".", new_id) new_..
2022.09.27
no image
[파이썬] 프로그래머스 키패드 누르기
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 *과 #을 10, 12라고 생각하면 키패드 영역을 3의 몫,나머지 좌표로 표현할 수 있다. 나머지가 0인 경우 왼손, 2인 경우 오른손으로 처리하면 된다. def solution(numbers, hand): # 현재 손가락 위치 pos_left = 9 pos_right = 11 # ?손잡이 처리 hand = hand[0].upper() answer = "" for i in numbers: i -= 1 if i == -1 : i = 10 # 이동해야할 좌표 x, y = divmod(i, 3) if y..
2022.09.27
no image
Affine 변환과 딥러닝
변환 → 공간을 변형 직선과 평형성을 그대로 유지하는 변환을 Affine 변환이라고 한다. Affine 변환의 일반식은 `Wx + b` 이며, 이는 Linear Transformation에 Traslation 항이 추가된 형태이다. Affine 변환의 전 - 후 과정을 시각화하면 다음과 같다. 위 그림을 보면 변환에 의해 격자 전체가 함께 이동한다는 것을 확인할 수 있다. 이처럼 변환에 의해 모든 점이 영향을 받아 이동하는 것은, 공간(Space)이 변형되는 것처럼 생각할 수 있다. 이 경우 변환의 역할이 공간을 변형시키는 것이라고 해도 무방할 것이다. 멀쩡한 공간을 굳이 변형하는 이유는 당연하게도 어떤 이득이 있기 때문이다. 실제로 변환에 의해 새롭게 얻은 공간에선, 기존에 풀지 못했던 문제를 해결할 ..
2022.09.25
no image
[파이썬] 프로그래머스 크레인 인형 뽑기
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 열 단위 입력을 처리하기 위해서 dict를 만들었는데 그냥 board 변수 그대로 for문 돌려도 됐을 거 같다. 사라진 인형의 개수를 세기 위해서 [ic]stack[/ic]을 사용했다. from collections import deque def solution(board, moves): # 남은 열 개수 len_list = dict(zip(range(1, len(board) + 1), [0] * len(board))) # 남은 열 저장 for idx, col in enumerate(zip(*bo..
2022.09.16
no image
[파이썬] 정규 표현식 활용하기
기본 패턴 re.search() : 주어진 패턴과 일치해야 함 re.match() : 주어진 패턴과 처음부터 일치해야 함 고급 패턴 () : 문자열을 그룹으로 묶어서 관리(캡쳐)할 수 있도록 도와준다. \1 ~ 9 : 캡쳐된 그룹의 인덱스를 명시해서 참고할 수 있다. # () : 그룹 지정, \1 : 캡쳐된 그룹 참조 re_pt1 = r"(aya|ye|woo|ma)\1+" 찾고자 하는 패턴이 반복되는 경우, Group 또는 findall을 활용할 수 있다. Group 활용한 경우 예시 # 우선 Group으로 match 시작 >>> m = re.match('([0-9]+) ([0-9]+)', '10 295') >>> m.group(1) # 첫 번째 그룹(그룹 1)에 매칭된 문자열을 반환 '10' >>> m..
2022.09.14
no image
Ensemble(앙상블) 기법 이해하기
Ensemble(앙상블)? 단일 모델 예측에 대한 Bias(편향), Variance(분산) 사이 관계를 표현하면 위 그림과 같다. 편향과 분산이 모두 낮은 이상적인 경우는 아쉽게도 불가능하다. 둘은 Trade-off 관계이기 때문이다. 하지만 단일 모델을 여러 개 모아 예측에 활용하면 편향과 분산 모두가 낮아지도록 예측을 개선할 수 있다. 이처럼 단일 모델을 여러 개 모아 예측을 개선하는 방법을 앙상블이라고 한다. 앙상블 구성 시 중요 고려 사항은 '개별 모델들이 충분한 수준의 Diversity를 만족하는 지'와 개별 모델의 결과를 '어떤 방식으로 합칠 것인지'이다. Diversity : Implicit vs Explicit 완전히 동일한 가중치를 가지는 모델을 여러개 묶는 경우, Diversity가 만..
2022.09.02
no image
[논문 리뷰] TabNet: Attentive Interpretable Tabular Learning
Abstract TabNet은 정형 데이터에 적합하도록 설계된 딥러닝 모델이다. TabNet은 Sequential Attention을 통해서 각 decision step 마다 feature(특성)을 선택하고, 이를 통해 트리 모델과 유사한 결정 경계를 가지게 된다. 이는 TabNet이 정형 데이터에 잘 동작할 수 있도록 해주는 inductive bias면서, 동시에 결과 해석과 효과적 학습도 가능하도록 도와준다. TabNet의 우수성은 여러 벤치 마크에서 기록한 높은 성능을 통해서 확인할 수 있다. 정형 데이터에 흔한 결측치도 self-supervised learning을 통해서 어느 정도 처리할 수 있다는 점도 특징이다. Introduction 이미지, 텍스트 등의 데이터엔 딥러닝이 많이 사용되는 반면..
2022.08.27
no image
AARRR, Retention, Cohort 분석 알아보기
AARRR 분석 고객 여정을 5개 단계로 나눠, 데이터 기반 의사 결정을 하는 분석 프레임워크이다. Acquisition, Activation, Retention, Revenue, Referral의 단계로 구성되고, 단계의 앞 글자만 따서 AARRR이라고 부른다. 각 단계의 특성은 다음과 같다. Acquisition(획득, 유입) 유저를 어떤 방식으로 유입시키고, 획득할 수 있는 지 고민한다. 획득을 위해선 광고가 필요하다. 다음과 같은 지표들이 고려된다. CAC(Customer Acquisition Cost) : 한 명의 고객을 확보하기 위해, 지출할 금액 DAU, MAU : 일간/월간 활성 유저 수 신규 방문자 수 Activation(활성화) 유입된 유저가 제품, 서비스의 주요 기능을 경험할 수 있도..
2022.08.26
no image
오픈소스 컨트리뷰션 아카데미 - 파이토치 허브 : 중간 회고
왜 참여? STS 성능 측정 과정에 Hugging Face의 load_metric 함수를 활용하다가 문제점을 발견했던 적이 있었다. 다른 사람들은 같은 문제로 시간을 보내지 않길 바라는 마음으로 관련 내용을 허깅 페이스에 제보하였고, 이를 통해 문제를 해결하는데 기여했던 경험이 있었다. 문제의 원인과 해결 방안을 찾는 것도 어려움이 있었지만, 이러한 문제를 Github를 통해 제보하는 데도 꽤 어려움이 있었다. 물론 Git을 안 써본 것은 아니었지만, 당시엔 협업 툴로 사용하기보다는 개인 저장소 정도로만 사용했었다. 실제로 pull request나 merge 등의 기능을 알기는 했지만 신기하다고만 생각할 뿐 활용할 일이 사실 별로 없었다. 그래서인지 당시 접했던 허깅 페이스의 Github 페이지는 굉장히..
2022.08.25
no image
[Git] 오픈소스와 Git - (2)
오픈소스 컨트리뷰션 아카데미에서 진행된 Git/Github 고급 실습 강의를 정리한 내용입니다. fetch 언제 사용? Origin(fork 해온 상태)과 Upstream(현재 원본 repo 상태)다를 때, 추가된 commit을 가져오고 싶을 때 활용 히스토리 창고(.git)에만 저장 git fetch upstream master pull = fetch + merge upstream/master 라는 branch 이름이 자동으로 생성 됨 rebase 현재 Base를 최신으로 갱신한다 내가 사용 중인 Base가 최신 것이 아니면 오류 발생할 수 있음 만약 내가 수정한 코드가 다른 사람이 최근에 수정된 코드가 동일한 파일에서 나왔을 경우 git rebase upstream/master rebase 단계 1단..
2022.08.25