파이썬
-
알고리즘: 백준 11052번 카드 구매하기(feat.c++)알고리즘/백준(BaekJoon) 2020. 8. 23. 18:13
백준 11052번 링크입니다. 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 다이나믹 프로그래밍을 이용하면 쉽게 해결할 수 있다. 우선 코딩하기 전에 dp[n]을 말로 정의하는 게 중요하다. dp[n] = n개의 카드를 구매했을 때 최댓값 라고 하자 dp[n]을 구하기 위해서는 다음과 같은 과정을 거친다. (편의상 k번째 dp[n]을 dpk[n]라고 하자) dp1[n] = dp[n - 1] + packs[1] dp2[n] = dp[n - 2] + packs[2] dp3[n] = dp[n - 3] + packs[3] ..
-
알고리즘: 백준 1697번 숨바꼭질 (feat. c++)알고리즘/백준(BaekJoon) 2020. 8. 23. 14:40
백준 1697번 링크입니다. 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 www.acmicpc.net bfs를 이용하면 문제가 생각보다 쉽게 풀린다. 최대 가능 인풋이 100000이기 때문에 시간복잡도가 최대 n^2 까지 가능하다고 생각하였다. 최단거리 문제이기도 해서 bfs를 선택하였다. #include #include using namespace std; int visit[100001]; bool check(int x) { //check 함수가 중요한듯! if (x 100001) ret..
-
메모: 파이썬 알고리즘 1차 강의 메모메모 및 기타 2020. 8. 20. 21:09
1. 문자열 역으로 출력하기 s = input() print(s[::-1]) 2. 시간복잡도 O(root(n)) 으로 소수판별하기 import math x = int(input()) answer = False if x % 2 == 0 and x != 2: answer = False else: for i in range(2, int(math.sqrt(x)) + 2): if x % i == 0: answer = False break else: answer = True print(answer) 3. 최대값구하기 3 4 1 7 9 2 2 7 9 6 1 9 5 7 3 9 # -*- coding: utf-8 -*- # UTF-8 encoding when using korean n = int(input()) numb..
-
데이터 사이언스: Seaborn 데이터 시각화 공부하기!(kde, violin, cat, distplot... )데이터 사이언스 2020. 7. 28. 13:01
Seaborn이란? Seaborn library에 대한 설명을 보면 Statistical Data Visualization 이라는 말이 나옵니다. 이는 통계를 기반으로 데이터를 시각화한다는 것을 의미합니다. 원래는 파이썬에서 그래프를 그릴 때 사용하는 라이브러리는 matplot인데 세세하기 만들어줘야 할 것들이 많아서 사용하는게 조금 어렵다고 합니다. 하지만 이 seaborn 라이브러리를 사용하면 이쁘고 간단하게 원하는 데이터를 시각화할 수 있죠 우선 주피터 노트북에 seaborn을 설치해 줍시다. 1. seaborn 설치하기 pip install seaborn==0.9.0 Requirement already satisfied: seaborn==0.9.0 in c:\users\seungju\anacond..
-
데이터 사이언스: Pandas plot의 종류와 특성 공부하기!(박스플롯, 산점도, 선, 막대, 원, 히스토그램)데이터 사이언스 2020. 7. 27. 12:57
Pandas에서 제공하는 여러가지 그래프들을 알아보겠습니다~ 1. 선그래프(Line plot) 다음과 같은 데이터프레임이 있을 때 import pandas as pd df = pd.read_csv("Downloads/broadcast.csv", index_col = 0) 선 그래프는 시간의 경과에 따라 변하는 모습을 나타내기 위한 플롯입니다. 그냥 꺽은선 그래프라고 생각하시면 됩니다. df.plot() 방송사의 전체적인 시청률이 떨어지고 있음을 알 수 있습니다. 아마도 유튜브나 넷플릭스 때문이겠죠? df.plot(y = "KBS") df["KBS"].plot() 위의 두 가지방법으로 출력할 수 있습니다. KBS의 시청률이 시간에 지남에 따라 감소하는 것을 알 수 있네요. 2. 막대그래프(Bar graph..
-
데이터 사이언스: Pandas 로 큰 데이터를 다루기(info, describe, unique, value_counts, sort_values), 데이터합치기(merge)데이터 사이언스 2020. 7. 26. 23:31
Pandas로 큰 데이터를 다루어 봅시다! 우선 데이터를 하나 받아옵시다. import pandas as pd df = pd.read_csv("Downloads/laptops.csv") df 데이터 크기가 너무 클 경우에는 ...으로 표현됩니다. 그래서 데이터를 보고 싶은 부분만 가져오기 위해 head를 이용합시다 df.head(N)를 이용하면 첫번째 행부터 N번 째 행까지 가져옵니다. default 값은 5라서 아무값도 입력하지 않으면 5줄의 행만 가져옵니다. df.head() tail()은 head()와 반대로 뒤에서부터 가져옵니다. head와 마찬가지로 default 값으로 5를 갖습니다. df.tail() 데이터 프레임의 정보를 가져옵니다. df.info() RangeInd..
-
데이터 사이언스: Pandas 잘못된 데이터 고치기 (rename, set_index)데이터 사이언스 2020. 7. 25. 13:15
잘못된 데이터를 고쳐가면서 pandas를 공부해 봅시다 다음과 같은 데이터가 있습니다. import pandas as pd liverpool_df = pd.read_csv("Downloads/liverpool.csv", index_col = 0) liverpool_df 칼럼들의 이름 첫 시작을 대문자로 바꾸어 줍시다. name_set = {'position': "Position", "born": "Born", "number":"Number","nationality":"Nationality"} liverpool_df.rename(columns = name_set, inplace = True) liverpool_df 보기 편하게 행의 이름 또한 만들어 줍시다. liverpool_df.index.name = ..
-
알고리즘: 백준 1149번 RGB거리 (feat. Python)알고리즘/백준(BaekJoon) 2020. 7. 21. 14:43
최적 부분구조와 중복되는 부분이 있으므로 다이나믹 프로그래밍으로 풀어줍니다. 점화식: 1. n번째 집에서 R을 칠할 때 비용의 최솟값 = min( n - 1 번째 집에서 G을 칠할 때 비용의 최솟값, n - 1 번째 집에서 B을 칠할 때 비용의 최솟값 ) + n 번째 R을 칠하는데 드는 비용 2. n번째 집에서 G을 칠할 때 비용의 최솟값 = min( n - 1 번째 집에서 R을 칠할 때 비용의 최솟값, n - 1 번째 집에서 B을 칠할 때 비용의 최솟값 ) + n 번째 G을 칠하는데 드는 비용 3. n번째 집에서 B을 칠할 때 비용의 최솟값 = min( n - 1 번째 집에서 R을 칠할 때 비용의 최솟값, n - 1 번째 집에서 G을 칠할 때 비용의 최솟값 ) + n 번째 B을 칠하는데 드는 비용 n개..