목록분류 전체보기 (489)
기록하는삶
[문제 설명] 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 0 zero 1 one 2 two 3 three 4 four 5 five 6 six 7 seven..
[문제 설명] 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해보겠습니다. 당첨 번호 ..
[문제 설명] 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매..
[문제 설명] 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를..
[문제 설명] 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 ..
파이썬은 객체지향(OOP _ Object Oriented Programming) 언어이다. 객체 = 속성(상태, 특징)과 행위(행동, 동작, 기능)로 구성된 대상 > 속성: '변수'로 구현 > 행위: '함수'로 구현 즉, 객체란 특정 목적을 달성하기 위한 변수와 함수들의 묶음이다. ex) 아래 링크의 유튜브 강의에서는 class를 자기소개서에 빗대어 표현하였다. https://www.youtube.com/watch?v=uIcK7-YU8uA 파이썬에서 객체를 생성하는 방법인 Class에 대해 예시를 통해 살펴보자. 아래는 자전거의 정보(이름, wheel_size, color, model_code)를 통해 자전거를 등록하고, 등록된 자전거의 행위(move, turn, stop, auto_cruise) 등을 ..
CountVectorizer를 통해 자연어를 벡터화하는 경우 발생할 수 있는 문제점(의미 없이 자주 사용되는 단어의 가중치의 증가 등)을 해결하기 위한 방법 중 하나가 TfidfVectorizer다. TfidfVectorizer Tf, idf 두 가지를 먼저 이해해야 한다. 1) Tf(Term Frequency) 하나의 문서(문장)에서 특정 단어가 등장하는 횟수 2) Idf(Inverse Document Frequency) Df(Document Frequency)는 문서 빈도. 특정 단어가 몇 개의 문서(문장)에서 등장하는지를 수치화 한 것. 그것의 역수가 idf다. 보통 그냥 역수를 취하기 보다는 아래처럼 수식화한다. 역수 개념을 사용하는 이유는, 적은 문서(문장)에 등장할수록 큰 숫자가 되게하고 반대..
Bow(Bag of Words) 단어의 순서는 고려하지 않고, 출현 빈도만으로 텍스트를 수치화하는 방법 1) 각 단어에 고유한 정수 인덱스 부여(단어 사전) 2) 각 인덱스 위치에 해당 단어의 출현 빈도를 기록한 벡터 표현 아래와 같이 형태소 분석기 Okt를 이용, 직접 만들어 볼 수도 있다. from konlpy.tag import Okt import re # 형태소 분석기 Okt okt=Okt() token=re.sub("(\.)","","정부가 발표하는 물가상승률과 소비자가 느끼는 물가상승률은 다르다.") token=okt.morphs(token) word2index={} bow=[] for voca in token: if voca not in word2index.keys(): word2index[..
GPU가 내장된 PC 혹은 노트북을 사용한다고 하더라도, 따로 설정을 해주지 않으면 기계학습 과정에서 CPU만을 사용한다. 과정이 약간 복잡하게 느껴지고, 한 번에 깔끔하게 되지 않기도 하지만 시간적 효율을 생각하면 꼭 해야하는 과정이다. 참고로 텐서플로우에서 제공하는 딥러닝 계열 연산에만 적용된다. (싸이킷런 내장 모델들에는 적용 x) [방법 1] 아나콘다 내부 패키지 활용하기 나는 아직 해보지 않았는데, 글 작성 시점을 기준으로 4개월 정도 전에 업로드 된 유튜브를 참고했다. 다음과 같이 세 줄만으로 아나콘다에서 제공하는 tensorflow 버전을 다운받을 수 있다고 한다. conda create -n [가상환경명] python=[원하는 파이썬 버전] conda activate [가상환경명] cond..