본문 바로가기

전체 글

카카오톡 채팅 로그 분석기(잉여력 분석기) 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) 출력 예제.. 더보기
2017. 08. 08 알고리즘 정리(백준 저지) 문제 1924번 - 2007년 https://www.acmicpc.net/problem/1924 문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 소스코드 month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] day = ['.. 더보기
Docker에서 Ubuntu 한글 locale 설정해서 빌드하기 요즘 파이썬으로 카카오톡 채팅 로그를 분석하는 프로그램으로 만들고 있는데, 필수 불가결하게 자연어 처리 패키지도 써야하고, 한글 인코딩도 신경을 써야합니다. euc-kr보다는 utf-8이 훨씬 나으니 utf-8을 써야하고, 더 나아가서 한글을 쓸 수 있는 환경일 수록 좋은데요. 무엇보다 자연어 처리 패키지가 파이썬이 아니라 OS 자체에 설치가 되고, 파이썬과 바인딩 해주는 패키지만 별도로 설치하는 형태라서 아무래도 배포하는 형태로 돌리려면 Docker 컨테이너를 쓰는게 낫다고 판단했습니다. 그런데 Docker에서 쓰는 Ubuntu 파일은 로케일 설정이 전혀 되어있지 않아서 모든 프로그램 구동 환경이 UTF-8이 아니게 되어서, 파이썬이 UTF-8의 텍스트 파일을 읽어오지 못하는 사태가 발생했었습니다. 구.. 더보기
맥북 프로 13인치(논 터치바) 구매기 ※ 앞부분이 쓸데없이 긴 글입니다. 간략한 구매 소감 등을 원하시면 스크롤 휙휙 내리면서 이미지 위주로 읽으세요. 구매 계기 2년전에 딱 서피스 구매기를 올린 적 있습니다. 서피스 3 (논 프로 모델)을 샀었죠. 서피스 3도 꽤 나쁘지 않은 태블릿입니다. 지금은 또 디바이스들의 스펙이 올랐으니 평가가 애매하긴 하지만, 당시 상황 고려하면 꽤 괜찮았고, 휴대성과 생산성 면에서 굉장히 좋은 태블릿이었죠. 2년동안 Pdf 파일을 서피스에 넣어서 강의를 듣고 다녔습니다. 그러나 역시 저스펙으로 나온 디바이스이니 만큼, 한계(?)가 올 때도 자주 있었습니다. 특히, 저같이 코딩을 해야하는 학부생 입장에선 가끔 그게 치명적이게 다가오기도 했죠. 그걸 최초로 느낀게, 모바일 프로그래밍 강의 들을 때였습니다. 안드로이.. 더보기
지뢰찾기(MineSweeper) with JavaFX 지뢰찾기(MineSweeper) 1. 제품 설명 지뢰찾기를 한 번도 실행시켜보지 않은 사람은 아마 없을 것이라 봅니다. (요즘 어린 친구들은 뭔지 모를수도 있습니다..) 가려져있는 타일을 하나씩 누르면서 지뢰를 찾아가는 게임인데, 게임 이름은 지뢰찾기인 주제에 진짜로 지뢰를 클릭하면 게임 오버가 됩니다. 정식 이름은 MineSweeper로, 올바른 번역은 "지뢰제거"입니다. 지뢰는 전부 랜덤하게 숨겨져 있으며, 좌클릭으로 타일을 까볼 수 있고, 우클릭으로 해당 타일이 지뢰일지 아닐지를 표시해둘 수 있습니다. 지뢰가 아닐 것 같은 공간은 좌클릭을, 지뢰라고 의심되는 공간은 우클릭을 해가면서 지정된 개수의 지뢰를 전부 찾아낼 때까지 반복합니다. 지뢰 근처에 있는 타일은 모두 숫자를 표시합니다. 이 숫자는 해.. 더보기