전체 글 70

프로그래머스 LV2 - 다음 큰 숫자

문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 입출력 예 nresult 78 83 15 23 입출력 예 설명 입출력 예#1 문제 예시와 같습니다. 입출력 예#2 15(1111)의 다음 큰 숫자는..

프로그래머스 LV1 - 키패드 누르기

처음 프로그래머스 사이트를 알고 1단계 가장 맨 위의 문제였다. 보자마자 빤스런 박았다. 그리고 1단계를 이 문제를 제외하고 모두 풀었다... 부딪혀야지 어쩌겠는가? 그리고 keypad = [[1,2,3],[4,5,6],[7,8,9],['*',0,'#']] def get_index(n): for idx1, i in enumerate(keypad): for idx2, j in enumerate(i): if j == n: return [idx1, idx2] return None def solution(numbers, hand): left = ['*'] right = ['#'] ans = [] for finger in numbers: if finger in [1,4,7]: left.append(finger) ..

프로그래머스 LV1 - 모의고사

전에 한번 오지게 도전했다가 실패했던 문제. 하지만 오늘 문득 오? 싶은 해결 방안이 떠올랐고 그 방법으로 풀이 성공 def solution(answers): ans = [0] * 4 a = [1,2,3,4,5] b = [2,1,2,3,2,4,2,5] c = [3,3,1,1,2,2,4,4,5,5] first = a * (len(answers)//5) + a[:(len(answers)%5)] second = b * (len(answers)//8) + b[:(len(answers)%8)] third = c * (len(answers)//10) + c[:(len(answers)%10)] correct1 = [x-y for x,y in zip(first,answers)] correct2 = [x-y for x,..

롤 분류기(3) - 본격적인 모델 생성

모든 것이 끝났다. no_recent_20_game 항이 True인 사람들은 다른 데이터를 수집하지 않았고, 결측치로 들어가 있어 610명이 나온다. 이들은 그냥 만나고 싶지 않은 사람으로 분류한다. 롤을 20판도 하지 않은 자들은 나의 '팀' 에서 박탈이다. 내가 잡은 기준이다. 이 두 부류로 나눌 예정이다 전체 승률, 최근 20판 승률이 필요하다. 이들은 이미 구해진 데이터에 식을 세워서 간단하게 표에 추가 가능하다. 세 그룹으로 분류했다. 위 기준으로 두 부류로 나누기엔 NaN값이 들어간 부류를 정하기 애매했다. 그래서 최근 20판을 하지 않았더라도 전체 승률이 50%를 넘기는 사람들은 잘 하는 사람과 못 하는 사람의 사이인 그냥 중간 계급에 넣기로 했다. 변수로 랭크를 추가하기로 했다. 골드 1~..

롤 분류기 (2) - 데이터 수집 노가다

골드 유저들의 puuid를 수집한 df를 만들고 저장했다. 이제 puuid를 통해 match 정보를 찾아보자. gold_user_df = pd.read_csv('gold_user.csv') gold_user_df.drop(['Unnamed: 0'], axis = 1, inplace = True) import time api_key = "RGAPI-c77f10f5-1674-4d32-a68f-6a6120878077" puuids = gold_user_df['puuid'] match_ID = [] for puuid in puuids: match_url = "https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/{}/ids?type=ranked&start=..

롤 분류기 (1) - 라이엇 api를 사용해 정보를 긁어보자.

라이엇 API 빅데이터 분석 시간에 배웠던 서비스의 오픈 API를 사용할 수 있는 DEVELOPER 홈페이지. 나같은 밥도 이 페이지에 들어오면 DEVELOPER 라는 이미지 덕분에 라이엇이 인정해 준 개발자 된 것 같기도 하고 뭐 그렇다. 다양한 정보를 긁어올 수 있는 API 페이지가 있는데, 구글에 검색해 봐도 잘 이해가 안가서 그냥 직접 박치기로 몇개를 해 보니 대충 감이 잡혔다. 소환사 정보부터 한 게임의 구체적인 모든 내역이 다 정리가 되어있다. 롤 짬밥 10년덕에 어떤 데이터들을 어떻게 불러올 수 있는지 파악하기가 쉬웠다. 역시 도메인 지식이 중요하다. 아무튼 나의 계획은 구글에서 검색하면 예제로 많이 나오는 챌, 그마, 마스터 등의 상위 티어 유저 알아보기! (1명의 정보만) 뭐 이런게 아니..

모든 일엔 관성이 있고, 지식은 승법 모형이다

이번 시험기간은 모든 시험의 전 4일부터를 두고 벼락을 4번을 나눠 쳐보기로 했다. 내일은 시계열 시험인데, 시계열에서 배운 모형 중 이중지수평활법의 모형에는 추세, 계절성이 곱해져 데이터에 쌓이는 승법 모형이 있다. 그런데 지식에 이 모형이 적용되는 것 같다. 저번까지의 거의 전날 몰아하는 것 보다 4일전부터 적게라도 3~4시간씩 준비하면 다음 날 어제의 내용을 또 보며 점점 익어가는 느낌이다. 그리고 공부를 1시간이라도 하겠다고 시작하면 관성이 있어 정작 1시간만 하는 일은 없다. 이는 게임도, 운동으로도 여태 느끼고 있었다. 굳이 공부에서 느끼지 않았을 뿐. 어쨌든 이번 중간고사 공부 모델링이 어떻게 더 나은 결과로 나올지는 내일부터 있을 test period에서 유의성이 나오겠지.

삶/회고록 2022.04.13

숙제하는 삶

나는 숙제를 기가 막히게 잘한다. 아니, 병적으로 집착한다. 다만 문제는 이 숙제들이 딱히 내 진로와 삶의 목표에 큰 도움이 되지 않는 것이다. 게임의 일일 퀘스트, 특히 로스트아크의 군단장과 휴식 게이지를 빼는 것에 광적으로 집착하고 있다. 그나마 삶에 도움이 되는 숙제라면 주 4~5회를 가는 헬스라고 생각한다. 정해진 3분할 운동 루틴을 짜놨고, 이걸 잘 안배해 숙제로 만들어 두면 나는 그걸 병적으로 집착해 하지 않고는 못배기더라. 2022년 3월 22일, 학교 수업이 끝나고 같은 삼수경험이 있고 학교마저 같게 된 (슬프게도) 친구와 또 다른 고등학교 친구와 동네 역 앞에서 술을 먹었다. 그냥 친구를 만나 술을 먹은거다. 그런데 좀 많이 다르더라. 원래 우리는 고등학교때부터 일단 게임쟁이 집단 소속이..

삶/회고록 2022.03.24