전체 글 65

[programmers] 전화번호 목록 / 해시 map으로 효율성 up

문제 더보기 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출..

[programmers] 완주하지 못한 선수 / 다양한 dict로 해시 구현

문제 더보기 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participantcompletionreturn ["leo", ..

[머신러닝이론] 아이템 기반 협업필터링과 SVD 추천시스템 구현 예제

행렬분해 [일반인을 위한] K-MOOC 인공지능을 위한 기초수학 입문 (Introductory Mathematics for Artificial Intelligence) 이상구 with 이재화, 함윤미, 박경은 II. 인 matrix.skku.ac.kr 4. 행렬 분해를 이용한 잠재요인 협업 필터링 용어정의 행렬 분해의 이해 확률적 경사하강법(SGD)를 이용한 행렬 분해 확률적 경사하강법(SGD) 활용예제 행렬 분해를 이용한 개인화 영화 추천시스템 개발 1. 용어정의 피드백 후 작성예 big-dream-world.tistory.com 행렬분해 : sparse의 공간 낭비를 줄이기 위해서 대각요소, 특이값 특이값 분해 : 행렬을 분해하는 과정에서 잠재적인 요인들로 유사한 아이템을 찾을 수 있다...

ML & DL 2023.04.29

[SWEA] 달팽이 숫자 - 행렬에서 방향 전환 구현

문제 더보기 달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다. 다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오. [예제] N이 3일 경우, N이 4일 경우, [제약사항] 달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10) [입력] 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스에는 N이 주어진다. 2 3 4 [출력] 각 줄은 '#t'로 시작하고, 다음 줄부터 빈칸을 사이에 두고 달팽이 숫자를 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) #1 1 2 3 8 9 4 7 6 5 #2 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 T = int(in..

[SWEA] 보급로 - 다익스트라 구현 / 디큐 & 힙큐 & 우선순위큐 비교

문제 더보기 2차 세계 대전에서 연합군과 독일군의 전투가 점점 치열해지고 있다. 전투가 진행중인 지역은 대규모 폭격과 시가전 등으로 인해 도로 곳곳이 파손된 상태이다. 그림 1(a)에서와 같이 도로들은 전투로 인해 트럭이나 탱크와 같은 차량들이 지날 갈 수 없다. 전투에서 승리하기 위해서는 기갑사단과 보급부대가 신속하게 이동하기 위한 도로가 있어야 한다. 공병대는 출발지(S) 에서 도착지(G)까지 가기 위한 도로 복구 작업을 빠른 시간 내에 수행하려고 한다. 도로가 파여진 깊이에 비례해서 복구 시간은 증가한다. 출발지에서 도착지까지 가는 경로 중에 복구 시간이 가장 짧은 경로에 대한 총 복구 시간을 구하시오. 깊이가 1이라면 복구에 드는 시간이 1이라고 가정한다. 그림 1 (a) 파손된 도로 (b) 지도..

[자료구조] 선형리스트 / 단순연결리스트 차이점 비교

1. 오버로드 리스트에 1개의 자료를 추가할 때 선형리스트 => 맨 뒤에 빈 칸을 하나 추가하고, 원하는 위치가 빌 때 까지 자료들을 한 칸씩 뒤로 이동 단순연결리스트 => 해당 위치에 링크만 추가 선형리스트의 데이터 삽입과 삭제 # 삽입 name = ['다현', '정연', '쯔위'] def insert_data(position, friend): if position len(name): print('데이터 삽입 범위 벗어남') return name.append(None)# 맨 뒤에 빈칸 추가 cur_len = len(name) # 배열의 현재 크기 for i in # 삭제 단순연결리스트의 원리 : 데이터와 링크로 구성된 노드가 연결되어 구성 # 함수 class Node()..

[Kaggle] Chat GPT4가 추천하는 타이타닉 생존자 예측 참고자료

타이타닉 생존자 예측의 핵심은 Age 결측치 예측에 있다고 해도 과언이 아니다. 따라서 어떻게 하면 Age 예측을 더 잘할 수 있을지 Chat GPT 4에게 물어봤고 아래의 링크들을 소개해 주었다. 1. This article on Analytics Vidhya covers various imputation methods for missing values in detail, including mean imputation, regression imputation, KNN imputation, and multiple imputation: https://www.analyticsvidhya.com/blog/2021/05/handling-missing-values-the-right-way-in-your-data/..

프로젝트 2023.04.11

[kaggle] 타이타닉 결측치 처리 - Age, Embarked

타이타닉 생존자 예측을 위해 train 데이터로 우선 모델을 만들고자 한다. 데이터를 읽어와 df로 저장하고 import numpy as np import pandas as pd df=pd.read_csv('train.csv') 데이터의 기본 정보를 살펴보면 다음과 같다. Age, Cabin, Embarked에 결측값이 있다. Cabin의 결측값은 687개로 현재 데이터만으로는 결측값을 추정하여 채워넣기엔 무리가 있으므로 활용하지 않는다. Age와 Embarked의 결측값을 추정해보기 위해 각 변수간의 상관관계를 분석해보았다. 상관관계 분석은 numpy의 corr을 사용하여 분석할 수 있는데 Sex, Embarked와 같은 명목형 변수는 숫자로 라벨링하여 가져와야 한다. 상관관계를 분석하기 위한 데이터프..

프로젝트 2023.04.02

[파이썬] SWEA: 백만장자 프로젝트 / 탐색 방향에 따른 비교

문제 더보기 25년 간의 수행 끝에 원재는 미래를 보는 능력을 갖게 되었다. 이 능력으로 원재는 사재기를 하려고 한다. 다만 당국의 감시가 심해 한 번에 많은 양을 사재기 할 수 없다. 다음과 같은 조건 하에서 사재기를 하여 최대한의 이득을 얻도록 도와주자. 1. 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다. 2. 당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다. 3. 판매는 얼마든지 할 수 있다. 예를 들어 3일 동안의 매매가가 1, 2, 3 이라면 처음 두 날에 원료를 구매하여 마지막 날에 팔면 3의 이익을 얻을 수 있다. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다 각 테스트 케이스 별로 첫 줄에는 자연수 N(2 ≤ N ≤ 1,000,000)이 주..