본문 바로가기

B

(32)
[프로그래머스] 큐/스택 - 프린터 전형적인 큐를 활용하는 문제. 콜렉션에서 deque를 굳이 활용해서 써봤다.. ㅎㅎ def solution(priorities, location): from collections import deque q = deque(priorities) name = deque([i for i in range(len(priorities))]) sheet = [] while len(q)!=0: if q[0] < max(q): q.append(q[0]) q.popleft() name.append(name[0]) name.popleft() else: q.popleft() sheet.append(name[0]) name.popleft() for num, loca in enumerate(sheet): if loca==locat..
[프로그래머스] 큐/스택 - 기능개발
[프로그래머스] 큐/스택 - 주식가격 그리 어려워보이지 않은 문제. 핵심만 파악하면 금방 풀 수 있는 문제인거 같다. 내 풀이는 아래와 같고 . . . range의 첫인자를 안주면 0부터 시작하고, 주면 준 자연수부터 시작한다. 그리고 두번째인자는 보통 포함되지 않고, (두번째인자-첫번째인자) 횟수만큼 반복문이 돈다고 보면 됨. append를 썼으니 last in을 이용했다고 생각함 ! 다른 사람은 이렇게 풀었는데, 나랑 푸는 방법은 거의 같은 풀이다. 미리 answer에 0을 채운 리스트를 만들어주고, 자리마다 카운트를 해주어서 값을 넣는 것이 조금 달랐다. def solution(prices): answer = [0] * len(prices) for i in range(len(prices)): for j in range(i+1, len(..
형태소 분석기 Khaiii를 colab에 설치해보자 github.com/kakao/khaiii kakao/khaiii Kakao Hangul Analyzer III. Contribute to kakao/khaiii development by creating an account on GitHub. github.com 카카오에서 개발한 세번째 형태소 분석기 Khaiii "Kakao Hangul Analyzer III"의 첫 글자들만 모아 만든 이름으로 보통 okt나 mecab을 주로 쓰지만 형태소 분석기 세계관 체크할때 빼놓지 않고 거론되는 녀석중에 한명이다. !git clone https://github.com/kakao/khaiii.git !pip install cmake 코랩에서 위와 같이 깃클론을 해주고 pip install cmake 아래와 같이 디..
[프로그래머스] 해시 - 베스트앨범 문제를 풀지 못해서 앓다가 찾아본 풀이 . . . 1시간을 더 줘도 못풀었을것 같다. 가장 첫빠따로 있는 풀이를 공부해보았다. 1. 딕셔너리를 만드는 가장 기초적인 방법 d = {e:[] for e in set(genres)} 딕셔너리를 다음과 같이 만들 수 있었다. set으로 장르를 묶었기 때문에 중복되는 원소가 없는 집합으로 for문이 돌아가면서 key값이 만들어질것이다. 그리고 value는 빈 리스트가 들어가겠고 2. sorted의 parameter인 key를 이용하자. sorted(d, key= lambda x: sum( map(lambda y: y[0],d[x])), reverse = True) 전형적으로 sorted는 알파벳순, 가나다순 정도로 생각했는데, 역시 내장된 파라미터를 통해서 어떻게..
[프로그래머스] 해시 - 위장 문제는 다음과 같고.. 직전 해시관련 문제에서 배운 collection 모듈의 counter 함수를 이용해서 문제를 풀어보았다. 성능과 효율성 모두에서 통과는 받았으나 . . . 저렇게 딕셔너리로 바꾸고 리스트로 바꾸고 밸류값을 자꾸 얻어내는 과정이 약간 비효율적인것 같아 역시 다른 사람들의 풀이를 참고해보았다. 전체적인 플로우는 나와 비슷한것 같지만, functools에 reduce함수를 이용해서 따로 해시개념(dictionary)를 적용하지 않고 바로 리스트 안에서 람다함수를 돌리는 것이 인상적이었다. (이게 훨씬 복잡도도 줄것 같다 ) 또 Counter를 쓸때 저렇게 안에 for문의 인자를 둘로 받아 자유자재로 원하는 변수를 꺼내서 쓰는 것도 . . . 배우자 !
[프로그래머스] 해시 - 전화번호 목록 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr [내 풀이] 첫번째 풀이) 접두사의 의미를 모르고 맨 처음에 not in 과 in 을 이용해서 반복문을 돌려서 자꾸 에러가 났다. 특히 문자열이 박힌 list를 굳이 int를 만들어서 sort하려는 행위가 문제를 제대로 이해한게 아니라는 생각이 든다. 바로 string값에서 sort를 해주고 앞뒤만 비교해주는 것이 왜 정답이 될 수 있는지에 대해 생각을 못했..
[프로그래머스] 완주하지 못한 선수 break 를 걸지 않으니까 정확성 /효율성 테스트 둘다에서 자꾸 에러가 났다. break를 거는 것과 효율성에는 상관이 있는것 같은데 왜 정확성까지 에러가 나지..? 무튼 break 까지 걸어주니까 테스트는 통과되었다 ! 나와 비슷한 풀이로는 이것이 있었다. 다른 점으로는 break를 걸지 않고, 바로 return을 해줌으로서 정확히 문제를 해결함과 동시에 스피드까지 잡아준것 같다. collection 모듈을 import하여 counter 함수로 정답을 냈는데, 2줄이면 끝나는 코드가 매력적이었다. counter 함수는 쉽게 말해서 내가 자주 사용하던 pandas dataframe에서 value_counts()를 걸어 원소종류의 개수를 파악하는 것의 리스트판이었다. 데이터프레임에서는 value_coun..
[자연어처리] 어떻게 텍스트 데이터를 늘릴 것인가? (Text Data Augmentation) 보통 Data Augmentation은 1. 학습데이터가 부족해서 데이터를 늘리거나, 2. 불균형데이터의 레이블들의 균형을 잡아주기 위하여 진행하곤 한다. 최근 NLP관련 프로젝트를 하면서 크롤링한 데이터를 팀원들과 일일히 라벨을 붙이고 있는데,, 현대판 인형공장이 따로없거니와, 크롤링 한 데이터에서도 쓸만한 데이터를 거르고 나니 1/10 수준으로 줄어들어 Data Augmentation을 고려하지 않을 수 없었다. 그래서 텍스트 데이터에서 Data Augmentation(이하 DA) 방법이 있는지 궁금해 찾아본 구글링 결과를 정리해보았다. 만약 내가 다루는 데이터가 이미지라면, 위아래, 혹은 좌우로 shift시키거나, 상하좌우를 반전시키거나, 확대, 축소하는 등 쉽고 간단한 방법이 있는데 직관적으로 생..