본문 바로가기

Programming

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의 텍스트 파일을 읽어오지 못하는 사태가 발생했었습니다. 구..
지뢰찾기(MineSweeper) with JavaFX 지뢰찾기(MineSweeper) 1. 제품 설명 지뢰찾기를 한 번도 실행시켜보지 않은 사람은 아마 없을 것이라 봅니다. (요즘 어린 친구들은 뭔지 모를수도 있습니다..) 가려져있는 타일을 하나씩 누르면서 지뢰를 찾아가는 게임인데, 게임 이름은 지뢰찾기인 주제에 진짜로 지뢰를 클릭하면 게임 오버가 됩니다. 정식 이름은 MineSweeper로, 올바른 번역은 "지뢰제거"입니다. 지뢰는 전부 랜덤하게 숨겨져 있으며, 좌클릭으로 타일을 까볼 수 있고, 우클릭으로 해당 타일이 지뢰일지 아닐지를 표시해둘 수 있습니다. 지뢰가 아닐 것 같은 공간은 좌클릭을, 지뢰라고 의심되는 공간은 우클릭을 해가면서 지정된 개수의 지뢰를 전부 찾아낼 때까지 반복합니다. 지뢰 근처에 있는 타일은 모두 숫자를 표시합니다. 이 숫자는 해..
매우 간단한 웹크롤링 - 이마트 휴점일 파이썬의 장점에는 배우기 쉽다, 인터프리터 기반의 스크립트 언어다 뭐 여러가지가 있지만 그 중 가장 큰 장점은 라이브러리가 많다는 점 아닐까 싶습니다. 자취하는 입장으로서 일요일에 아무 생각없이 이마트에 갔다가 휴점일이라서 낭패를 봤던 적이 많은데요. 그래서 나갈 때마다 폰으로 휴점일을 직접 검색해보는 게 불편하다 생각해서, 이를 따로 크롤링해서 띄워주면 어떨까 하는 생각을 했습니다. 찾아보니 그렇게까지 어렵지는 않더라구요. 이마트 휴점일은 다음 페이지에 게시되어 있습니다. https://store.emart.com/main/holiday.do 여기서 점포명을 검색하면 나오지만, 웹 크롤링에서는 조금 다르게 할 생각입니다. 파이썬에서 기본적으로 HTMLParser를 지원합니다만, 여기에선 더 많이 쓰이는..
간단한 gcc 사용법 지난 달부터 리눅스로 프로그래밍을 하고 있는데, 처음에 제대로 된 gcc 사용법을 몰라서 고생했습니다. 제가 필요할 거 같아서 일단 여기에 적어놓습니다. $ gcc main.c기초적인 사용법은 위와 같습니다. 컴파일 하고 싶은 C 파일을 적으면 결과물로 a.out이라는 바이너리 실행 파일이 나옵니다. 해당 파일을 실행하기 위해서는 ./a.out 이라고 입력하면 됩니다. 실행파일의 이름을 정해주고 싶을 땐 -o 옵션을 사용하면 됩니다. $ gcc -o main main.c 이렇게 하면 a.out이 아니라 main이란 이름으로 파일이 생성됩니다. 컴파일 과정은 c 파일에서 바로 바이너리로 가는 것이 아니라, 먼저 object 파일로 변환하고 링크라는 과정을 통해 최종적으로 실행가능한 컴파일 과정을 거칩니다...
Visual Studio에서 배열 size를 변수로 할당받는 방법 리눅스에서 gcc로 작업할 때는 배열 size를 변수로 넣어줘도 잘만 돌아갔었는데 Visual Studio에는 그렇게 시도했다간 E0028 식에 상수 값이 있어야합니다. C2057 상수 식이 필요합니다. C2466 상수 크기 0에 배열을 할당할 수 없습니다. C2133 'arr': 알 수 없는 크기입니다. 이렇게 네 종류의 에러메시지를 만나게 되죠. 어쩔 수 없이 동적할당으로 포인터 변수를 만드는 수밖에 없습니다. 어차피 배열도 사실 배열의 첫번째 원소의 주소값을 가리키는 포인터 변수에 불과하니까요. #include int main() { int size = 100; int* arr = malloc(size*sizeof(int)); arr[0] = 10; arr[1] = 12; printf("%d, %d..