프로그래머스 코딩테스트 고득점 kit (스택 / 큐) 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,..
문제는 완전 탐색으로 푸는 문제이다. 처음에 bfs 로 풀릴 줄 알았으나 같은 행, 열에 대한 부분만 탐색해야 하기에 완전 탐색으로 푸는 문제이다. 문제 체스에서 룩이라는 기물은 막혀있지만 않으면 룩의 위치에서 같은 행, 같은 열에 해당하는 칸 중 하나로 한 번 이동할 수 있다. 단, 특정 칸이 막혀있다면 그 칸에서부터 더 나아갈 수는 없다. 만약 룩이 아래 그림과 같이 5행 4열에 존재하고 같은 행열에 기물이 없다면 5행이나 4열에 존재하는 칸 중 어디로든 갈 수 있다. 예를 들어, 5행 2열 혹은 1행 4열로 움직일 수 있다. 차례에 주어진 이동 횟수는 한 번이므로 이동이 완료되었다면 상대방의 차례로 넘어간다. 입력 8줄에 걸쳐 8x8 체스판의 상태가 주어진다. 이때 0은 기물이 없는 상태이고, 1은..
sql 문제가 나오는 기업의 코딩 테스트를 준비하느라 다~~~ 까먹어버렸던 sql 공부를 다시 해본다.. https://school.programmers.co.kr/learn/courses/30/parts/17044 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 SQL KIT 에서 충분히 연습을 해볼 수 있기 때문에 그리 어렵지는 않지만, 그래도 모르는 기초 문법은 없어야 하기에 이렇게 정리로 끄적여 본다 😂 공부하면서 가장 어렵게 느껴졌던 GROUP BY 파트와 JOIN 파트로 나눠서 정리해 볼것이다. 가장 일반적으로 사용하는 문법 : SE..
라벨의 불균형을 확인하고 불균형을 처리하는 방법은 다음과 같습니다! print(train['Class'].value_counts()) print(train['Class'].value_counts() / train['Class'].value_counts().sum() * 100) 방법은 크게 두가지가 있는데요! 샘플링 방법과 StratifiedKFold를 통해 라벨을 균일하게 한 뒤 학습을 시키는 방법입니다. 1. Sampling 방법 그중에 Oversampling 방법인 SMOTE 와 hybrid 방법인 SMOTE+ENN 방법이 있습니다. 저는 SMOTE+ENN 방법을 택하였습니다. 선택 이유: 데이터 클래스 비율이 너무 차이가 나면(highly-imbalanced data) 단순히 우세한 클래스를 택하..
이상치 처리 방법은 다양하지만 이번 시간에는 3sigma 기준으로 이상치를 처리해볼껍니당! (IQR로 구할 수 도 있지만 이번 시간에는 3sigma 방법을 볼꺼예요 ☺️) 3sigma 란? 일변량 자료들 중 평균 ± 3*표준편차를 벗어나는 것들을 비정상이라 규정(정규분포 기반) #이상치 처리 def outlier(data): threshold = 3 outlier = [] for i in range(len(data)): if (data[i]>data.mean()+3*data.std())|(data[i]
모델 성능 향상에는 다음과 같은 방법들이 존재합니다! 저같은 경우는 빠르게 분석하기 위해 3개의 방법을 이용하는데요! 1. 모델 하이퍼 파라미터 튜닝 2. Coef를 통해 영향이 큰 피처 이상치 제거 3. 모델 앙상블 (보팅/스태킹) 1. Hyper Params Tuning Gridsearch 를 이용해 최적의 하이퍼파라미터를 찾는다. 엔지니어링하는 것 보다 최적의 파라미터를 구할 수 있는 장점이 있지만 찾는 데 오래걸리는 단점이 있다. gb_reg = GradientBoostingRegressor() gb_reg.get_params().keys() # 모델 파라미터 확인 #Regressor : Gradient Boosting Regressor params = {'n_estimators': [200,40..
요번 포스팅에서는 BOSTON Dataset으로 선형회귀와 다항회귀 분석을 해보겠습니당! ☺️ 1. 선형회귀 선형회귀 부터 해볼껀데 우선 쉽게 pandas 에 기본으로 내장되어 있는 boston dataset 을 불러옵니다. 0. Library #preprocess import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline #visualization import seaborn as sns from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.linear_model im..
벌써 DP 까지 왔습니다! 나에게 박수를!!! 짝짝!!!!!!!!!! 이번 시간에는 dp를 위한 대표 문제를 풀어볼껀데요! dp는 부분 문제를 해결한 결과를 이용하여 전체 문제를 해결하는 방법입니다. dp는 크게 Top-down (분할 정복법) 방법과 Botton-up (중복 제거) 방법으로 나눌 수 있습니다. dp 문제 풀이 순서는 다음과 같은 방법으로 풀면 쉽게 설계할 수 있습니다!!! 1) 부분 문제를 정의 2) 점화식을 구하라 3) 문제를 해결 그럼 문제를 한번 풀어보자!!!!!!!!!!!!!!!! . . 문제 N개의 카드가 주어지고, 각각은 자연수의 점수를 가진다. 철수는 이제 이 카드를 가져감으로써 카드에 적혀있는 수 만큼의 점수를 얻는다. 단, 카드를 가져갈 때 한가지 규칙이 있는데, 이는 ..
본 문제는 이진탐색 알고리즘 대표 문제이다! 😀 문제 NN은 2차원 배열의 모양으로 곱셈 1단부터 N단 까지 값을 적어놓은 형태. 토리는 구구단표처럼 NN단표를 만들었다고 한다. NN단표는 2차원 배열의 모양으로 곱셈 1단부터 N단까지의 값들을 적어놓은 형태이다. NN단표의 배열을 A라고 했을 때, 배열의 들어가는 수 A[i][j]=i*j이다.(즉, 4행 7열에는 28, 7행 5열에는 35가 들어가 있다.) 알랩이는 N단까지 나온 숫자들 중에서 K번째로 작은 수를 찾고 싶어한다. 이때, 중복되는 여러 수들을 고려한다. 즉 N*N개의 모든 수들 중에서 K번째 수를 구하는 것이다. 입력 첫째 줄에 배열의 크기 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄에 K가 주어진다. K는 N..
문제 N과 시작 숫자 S가 주어지면 숫자 피라미드를 만드는 프로그램을 작성하시오. 예를 들어, N이 5이고 S가 3 이라면, 그 숫자 피라미드는 다음과 같다. 3 456 21987 3456789 987654321 시작 숫자 S는 꼭대기부터 1씩 증가한다. 시작 행의 번호가 1번이라고 했을때, 짝수번째 행은 왼쪽에서 오른쪽으로 1씩 증가하도록 적고, 홀수번째 행은 거꾸로 적는다. 숫자가 만약 10이 될 경우, 1로 바꾸고 다시 증가한다. 입력 입력의 첫 번째 줄에 N과 시작 숫자 S가 주어진다. ( 1≤N≤100, 1 ≤S≤ 9) 출력 첫 번째 줄부터 숫자 피라미드를 출력한다. (각 줄에 존재하는 공백의 개수와 숫자의 개수를 정확하게 확인해주시바랍니다.) 입력예제 5 3 출력예제 3 456 21987 34..