본문 바로가기

Programming

2018. 09. 01 백준 알고리즘 파이썬 정리 2133 - 타일채우기 소스코드 import sys num = int(sys.stdin.readline()) D = [0 for i in range(num+1)] D[1] = 0 if num >= 2: D[2] = 3 for i in range(3, num+1): D[i] = 3*D[i-2] for j in range(i-4, 0, -2): D[i] += 2*D[j] if i % 2 == 0: D[i] += 2 sys.stdout.write(str(D[num])) 코멘트 2n때랑 다르게 아래에 한칸이 더 생겨버렸으므로 더 생각을 해야만 했던 문제. 결국엔 초반 패턴을 직접 그려서 경우의 수를 구한 다음에, 그 이후에 나오는 것들은 다이나믹 프로그래밍으로 구하는 형식이었다. 결국 초기 값은 직접 파악해야한..
파이썬을 이용해서 유튜브 플레이리스트 동영상을 받아보기 0 - PyTube 설치 들어가기 전에 YouTube에 공유되는 영상들은 모두 저작권을 가지고 있는 영상입니다. 이를 다운로드 받아 무단으로 배포하거나, 저작권자의 허락 없이 임의로 수정하여 사용할 경우 법적 책임을 물을 수 있습니다. 이 포스트에서 YouTube 영상을 다운로드 받는 방법을 설명하고는 있으나, 이에 대해 발생하는 문제에 대해서는 저는 책임지지 않습니다. YouTube 영상을 다운로드 받는 방법들 가끔 YouTube 영상을 다운로드 받고 싶은 경우가 생깁니다. 저같은 경우는 플레이 스테이션 게임 영상을 방송으로 YouTube에 저장한 뒤에 별도의 다운로드를 써서 받는 방법을 쓰고 있는데요. 간단하게 영상 한 두개만 받는 정도라면 https://ssyoutube.com 을 사용하거나 검색으로 찾아볼 수 있는 You..
2018. 08. 15 백준 저지 알고리즘 정리(파이썬) 문제 1912 - 연속합 링크 - https://www.acmicpc.net/problem/1912 소스코드 import sys num = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().rstrip().split())) D = [0 for i in range(num)] D[0] = arr[0] for i in range(1, num): D[i] = max(D[i-1] + arr[i], arr[i]) sys.stdout.write(str(max(D))) 코멘트 솔직히 봐도 봐도 봐도 계속 틀려서 고심 끝에 답을 봐야했던 문제였다. 문제 접근 방법부터가 잘못 되었었다. 나는 D를 "해당 index까지 범위에서 가장 큰 연속합"으로 정의..
2018. 08. 14 백준 저지 알고리즘 정리(파이썬) 문제 2156번 - 포도주 시식 링크 - https://www.acmicpc.net/problem/2156 소스코드 import sys wine = [] num = int(sys.stdin.readline()) for i in range(num): wine.append(int(sys.stdin.readline())) T = [[0 for i in range(2)] for j in range(num+1)] for i in range(1, num+1): T[i][0] = max(T[i-1]) if i > 1: T[i][1] = max(T[i-2][0] + wine[i-1] + wine[i-2], T[i-1][0] + wine[i-1]) else: T[i][1] = wine[i-1] sys.stdout.wri..
카카오톡 채팅 로그 분석기(잉여력 분석기) ChatLogAnalyzer(KakaoTalk) 제품 설명 안드로이드 폰에서 대화내용 내보내기로 얻어낸 카카오톡 채팅로그 txt 파일을 분석합니다. 대화 참여 인원 중 누가 몇 글자를 떠들었는지, 각 개인별로 많이 언급했던 키워드는 어떻게 되는지를 표시하고, 시간대별, 날짜별 데이터도 전부 분석이 됩니다. 현재 버전에서는 개인별 키워드 분석만이 콘솔 상에 표시가 되며, 나머지 데이터들은 .json 형식으로 /result/(텍스트 파일 이름)/ 폴더에 전부 저장됩니다. 제작 계기 코드를 보면 알겠지만 상당히 조악합니다. 이유인 즉슨, 파이썬을 막 배웠을 초창기에 만들었기 때문입니다. 16년도 겨울에 학교에서 파이썬을 배우면서, 파이썬을 가지고 좀 더 유의미한 프로젝트를 하고 싶어 조사를 해보다가, 파이썬에..
2018. 08. 13 백준 저지 알고리즘 정리(파이썬) 오늘은 별거 없다. 문제 9465 - 스티커 링크 - https://www.acmicpc.net/problem/9465 소스코드 import sys num = int(sys.stdin.readline()) result = '' for i in range(num): size = int(sys.stdin.readline()) arr = [[0] * 2 for i in range(size)] line = sys.stdin.readline().rstrip() line += ' ' + sys.stdin.readline().rstrip() for (j, e) in enumerate(line.split()): arr[j % size][j // size] = int(e) T = [[0] * 3 for i in rang..
2018.08.12 백준 저지 알고리즘 정리(파이썬) 문제 1463 - 1로 만들기 링크 - https://www.acmicpc.net/problem/1463 소스코드 import sys import math num = int(sys.stdin.readline()) arr = [0]*(num+1) for i in range(1, num+1): if i == 1: continue val = [] if i % 3 == 0: val.append(arr[i//3] + 1) if i % 2 == 0: val.append(arr[i//2] + 1) val.append(arr[i-1] + 1) arr[i] = min(val) sys.stdout.write(str(arr[num])) 코멘트 딱히 없다. 다이나믹 프로그래밍의 전형적인 예. 문제 11726 - 2xN 타일링..
2018. 08. 11 백준 저지 알고리즘 정리(파이썬) 문제 - 1158번 조세퍼스 순열 https://www.acmicpc.net/problem/1158 문제 조세퍼스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 M(≤ N)이 주어진다. 이제 순서대로 M번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, M)-조세퍼스 순열이라고 한다. 예를 들어 (7, 3)-조세퍼스 순열은 이다. N과 M이 주어지면 (N,M)-조세퍼스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 M이 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ M ≤ N ≤ 5,000) 출력 예제..