코드잇
-
알고리즘: 백준 2217번 로프 (feat.Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 16:51
백준 2217번 링크입니다. https://www.acmicpc.net/problem/2217 2217번: 로프 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 www.acmicpc.net 로프들이 견딜 수 있는 리스트를 만들어 오름차순으로 배열한다. 만약 10, 25, 30가 로프가 버틸 수 있는 최대중량으로 주어진다면 10 x 3 = 30 25 x 2 = 50 30 x 1 = 30 으로 최대 버틸 수 있는 중량은 50이 된다. ropes[i] * (n - i) 들로 이루어진 리스트의 최대 값을 찾으면 되는 것이다. import sys input ..
-
알고리즘: 백준 1932번 회의실 배정 (feat.Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 16:22
백준 1932번 링크입니다. https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 최대 사용할 수 있는 회의의 수를 구하기 위해서는 가장 빨리 회의가 끝나는 순으로 회의를 나열한다. 회의의 끝나는 시간을 오름차순으로 배열한 후 전 회의의 시작시간과 다음 회의의 끝나는 시간을 비교하여 리스트를 담는다. 처음에 2차원 리스트의 두번째 요소만 배열하기 위해서 이중 for문을 사용했지만 O(n) = n^2가 되기 때문에 시간초과가 되었다. 그래서 lambda x: x[1]를 key로 받아 sort 함으로써 문제를 해결하였다. import sys input = sys.stdi..
-
알고리즘: 백준 2193번 이친수 (feat.Python)알고리즘/백준(BaekJoon) 2020. 7. 29. 15:09
예시를 들어서 문제를 좀 더 자세히 뜯어 봅시다. f(N) = N 자리 이친수의 개수 라고 할때, N = 5 인 상태 즉, f(5)는 어떻게 구성되어 있을까요? 우선 N = 5 일때 이친수는 다음과 같습니다. 10101 10100 10010 10001 10000 이것들을 가장 처음 1을 제외한 그 다음 1을 기준으로 쪼개보면 다음과 하나의 규칙을 발견할 수 있습니다. 10101 10100 f(3)과 모양이 같고 100010 f(2)와 모양이 같고 100001 f(1)과 모양이 같습니다. 100000 N = 0 는 정의되어 있지는 않지만 f(0) = 1이라고 합시다. 이렇게 봤을 때 f(5) = f(3) + f(2) + f(1) + f(0) 이라고 할 수 있겠군요! 그런데 여기서 또 살펴보면 f(2) + ..
-
데이터 사이언스: 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 = ..
-
알고리즘: 백준 1932번 정수 삼각형 (feat. Python)알고리즘/백준(BaekJoon) 2020. 7. 22. 07:21
최적 부분 구조와 중복되는 부분이 보인다. 다이나믹 프로그래밍으로! 점화식: n 번째 줄 0번째까지의 합 = n - 1번째 줄 0번째까지의 합 + n 번째 줄 0번째 값 n 번째 줄 1번째까지의 합 = max(n - 1번째 줄 0번째까지의 합, n - 1번째 줄 1번째까지의 합) + n번째 줄 1번째 값 n 번째 줄 2번째까지의 합 = max(n - 1번째 줄 1번째까지의 합, n - 1번째 줄 2번째까지의 합) + n번째 줄 2번째 값 ... n 번째 줄 n - 1번째까지의 합 = max(n - 1번째 줄 n - 2번째까지의 합, n - 1번째 줄 n - 1번째까지의 합) + n번째 줄 n - 1번째 값 n 번째 줄 n번째까지의 합 = n - 1번째 줄 n - 1번째까지의 합 + n 번째 줄 n번째 값..