목록전체 글 (82)
데이터 꿈나무
기록해두면 좋을 알고리즘 문제를 회고하면서, 더 기억에 담고자 글을 작성하게 되었습니다.😊회고 및 느낀점금방 풀 수 있을 것 같다고 느껴졌는데, 고민하는데 시간이 조금 더 걸렸다. 배열 a와 배열 b가 처음부터 같은 리스트일 수도 있다. 이것이 나중에 생각이 나서 맨 앞쪽에 추가했다.마지막 원소부터 인덱스 1의 원소까지 반복문을 돌려야 하는 문제였다.그리고 최댓값의 인덱스를 구했어야 했다. '리스트.index(값)' 으로 구해야 하는 것도 생각이 나지 않아, 방법을 검색해봤다.처음에는 인덱스로만 값을 비교(현재 원소가 인덱스와 같은지 비교)하는 것을 활용하지 않았었다.그러다가 생각이 꼬여서 다시 처음부터 생각했다. 그랬더니 이런 방법으로 풀면 됐었구나..! 라는 것을 깨달았다. 'a[last], a[m..
KT_Aivle School의 코딩마스터스가 시작되었다! 기록해두면 좋을 문제들은 기록해두고자 글을 작성하게 되었다.코드 자세한 설명은 주석을 달아놓았으니 참고하면 되겠다..!! 문제 설명 두정동에는 N개의 아파트 단지가 일직선상에 존재합니다. 각 아파트 단지에는 1번부터 N번까지 번호가 붙어있습니다. 두정동 동사무소에서는 아파트 단지 중 한 곳에 분리수거장을 지으려고 합니다. 분리수거장으로부터 각 주민들까지의 거리의 합이 최소가 되도록 하려면 어떤 아파트 단지에 분리수거장을 지어야 하는지 구하세요. 분리수거장으로부터 어떤 주민까지의 거리는 분리수거장이 있는 아파트 단지의 위치와 해당 주민이 거주하는 아파트 단지의 위치의 차로 계산됩니다. 단, 조건을 만족하는 아파트 단지가 여러개일 경우, 더 작은 번..

DataFrame Mergeimport pandas as pd Inner joindata1 = { '학번' : [1, 2, 3, 4], '이름' : ['아이유', '김연아', '홍길동', '강감찬'], '학과' : ['철학', '경영학', '컴퓨터', '물리학']}data2 = { '학번' : [1, 2, 4, 5], '학년' : [2, 4, 3, 1], '학점' : [1.5, 2.0, 4.1, 3.8]}df1 = pd.DataFrame(data1)df2 = pd.DataFrame(data2)display(df1)display(df2)# inner join -- 일치되는 것만 mergeinner_df = pd.merge(df1, df2, on='학번', how='inne..

데이터 변경import numpy as npimport pandas as pddf = pd.read_csv('./data/student.csv')display(df) 컬럼 생성# '등급' 컬럼 생성df['등급'] = 'A'display(df)# 성적에 따라 등급 부여grade = np.array(['B', 'D', 'B', 'C', 'A'])df['등급'] = gradedisplay(df)# 나이를 의미하는 age라는 시리즈 생성age = pd.Series([21, 20, 24, 23, 28])# 데이터프레임내 나이 컬럼을 만들고 시리즈를 값으로 할당df['나이'] = agedisplay(df) 인덱스 설정 및 리셋df.indexRangeIndex(start=0, stop=5, step=1)df.ind..

데이터 선택넘파이 실습 # 라이브러리 로딩import numpy as np# 파이썬 리스트에서 넘파이로 변환a = [1, 3.14, True, 'hello'] # 리스트b = np.array(a)# 리스트 원소 데이터 타입 확인print(a)for element in a: print('Data type of {} : {}'.format(element, type(element)))[1, 3.14, True, 'hello']Data type of 1 : Data type of 3.14 : Data type of True : Data type of hello : # 넘파이 배열 원소 확인print(b)for element in b: print('Data type of {} : {}'.format(..

정렬 문제인데, 메모리 제한이 있어서 시간이 꽤 걸린 문제였다.무려 '네 번째 시도'만에 성공한 문제. (정답은 아래 '네 번째 시도'에 있습니다.) 📌 첫 번째 시도처음에는 아래와 같이 리스트에 입력값을 모두 담아서 sort를 하려고 했으니 메모리 초과가 나타났다.x = []n = int(input())for _ in range(n): a = int(input()) x.append(a) x.sort()for j in x: print(j) 📌 두 번째 시도조금 더 속도가 빠른 정렬을 찾아보다가 퀵정렬을 사용해봐도 되겠다라는 생각이 들어서, 함수를 구현하고 적용을 시켜보았다.그러나 역시나 메모리 초과.# 퀵 정렬 함수def quick_sort(arr): if len(a..
📌 백색 잡음 (White Noise Process)같은 랜덤 값인데 모든 랜덤이 이전과 무관하게 현재 시점에서 랜덤 값으로 발생하는 것.Ex.) 심장 박동 수 📌 확률 보행 과정 (Random Wark Process)직전 데이터에서 위아래로 랜덤이 계속 발생하는 것.Ex.) 주식(주가 지수) 📌 정상 확률 과정 (Statinonary Process)Stationary가 인정된 분석. 직전의 변동성을 가져온다.정상 확률 데이터인지 먼저 확인하고, 범주 안에 있을 때만 ARIMA 모델을 사용할 수 있다. ➡️ 백색 잡음과 정상 확률 과정의 차이점은 이전 데이터의 정보를 가져오는지(정상확률과정) 아닌지(백색잡음). 📌 AR 모형직전의 값이 다음 값에 영향을 준다라는 논리 📌 MA 모형직전의 랜..

입력 조건- 첫째 줄에 공간의 크기를 나타내는 n이 주어진다. (1 - 둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다. (1 출력 조건첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (X, Y)를 공백으로 구분하여 출력한다. 입력 예시 5R R R U D D출력 예시3 4 L: 왼쪽으로 한 칸 이동R: 오른쪽으로 한 칸 이동U: 위로 한 칸 이동D: 아래로 한 칸 이동 작성한 코드n = int(input())plans = input().split()x, y = 1,1# 'L','R','U','D'에 따른 이동 방향dx = [0,0,-1,1]dy = [-1,1,0,0]move_type = ['L','R','U','D']for plan in plans: # plan 하나당, f..

w = 0.01 * np.random.randn(Din, Dout) 위 코드는 zero-mean, unit-std를 갖는 가우시안 분포를 따르는 값들을 0.01 scaling 시켜주어 (std=0.01 로 만듦) 초기화시켜준 것이다. 이러한 방식은 작은 network에서는 잘 동작하지만 layer가 많아질 수록(모델이 깊어질수록) 문제가 발생하게 된다. 0.01은 제곱한 것이 분산으로 들어가게 된다. (= 루트 0.0001) W를 0.01로 두면, 작은 값이 곱해지고 또 곱해져서 std가 점점 작아지는 현상을 볼 수 있다. (점점 0에 가까워진다.) 그렇기 때문에 모델 업데이트가 되지 않는다. 그렇다고 위 코드의 0.05처럼 W를 너무 크게 주면, -1과 1에만 몰려있게 되는 현상을 확인할 수 있다. 따..