전체 글 98

2009 정보올림피아드 지역본선 문제 Review (3)-1

3번 문제는 처음 보고 정체를 알 수 없었다. 의좋은 형제 어떤 N × N 개의 단위 구역으로 구성된 논이 있다. 각 단위 구역에서는 쌀이 생산되는데 구역에 따라서 쌀의 생산량이 다르다. 아래는 5 × 5 = 25개의 단위 구역으로 나누어진 논을 보여주고 있다. 각 구역에 적혀 있는 숫자는 예상되는 쌀의 수확량(가마)이다. 3 4 5 1 8 8 2 3 2 2 0 2 9 5 4 1 11 3 0 5 4 5 2 7 1 두 의좋은 형제는 이 N × N의 논을 다음과 같이 두 부분으로 나누어 형은 아래쪽에 있는 땅을 가지고, 동생은 위쪽의 땅을 가지기로 하였다. 전체 구역을 마구잡이로 나누면 기계로 농사를 짓는데 불편하기 때문에 각 형제에게 배분된 구역이 단조 증가하는 계단 모양이 되게 하려고 한다. 즉, 주어진..

2009 정보올림피아드 지역본선 문제 Review (2)-3

이번 솔루션은 다소 간단하다. 또한 내가 작년에 쓰다가 한 문제를 망치게 만든 바로 그 방법이기도 하다.... (당시 int 형 변수를 제곱한 만큼 신규 할당시켰더니 오버플로) 바뀐 줄은 강조해 놓았다. #include #include int main() { int n, i, j; int higher = 0; int *tower = (int *)malloc(sizeof(int)*500001); FILE *fpi, *fpo; tower[0] = 100000000; fpi = fopen("INPUT.TXT", "r"); fpo = fopen("OUTPUT.TXT", "w"); fscanf(fpi, "%d", &n); for (i = 0; i < n; i++) { fscanf(fpi, "%d", tower +..

조만간 어셈블리어 SyntaxHighlighter Brush를 재게시하겠습니다.

지금 제 블로그에 SyntaxHighlighter를 설치해 놓고, 별도의 확장 코드를 만들어서 어셈블리어 코드를 올리는 중입니다. 일단 당장 SH에서 어셈블리어를 못 올리는 게 아쉬워서 파일을 올리긴 했지만, -_-; 이건 뭐 걸레입니다. SyntaxHighlighter의 구조를 완전히 이해했으니 시험 끝나고 재개발 들어갑니다. (오늘 시험 첫 날이었습니다. 이게 뭐 하는 짓이지... 4일까지 시험인데) 목표는: 1) 이름만 8086이지 명령어 등등 x86 예약어까지 모조리 있는 문제 해결 2) SH 2.0 패키지에서 도입된 형식으로 가독성 향상 3) MASM, GAS 따로 만들어 지원하고, aliases 수정. (게시 원본은 NASM) 참고. 저도 2.0.320으로 업그레이드 완료했습니다.

2009 정보올림피아드 지역본선 문제 Review (2)-1

2번 문제는...ㅅㅂ 작년에 처음 정올 나갔을 때 메모리 관리하다가 병신이 된 까닭에 (그 때 malloc 쓰는 다 된 코드였는데 얘가 오버플로. 안 했으면 통과였다.) 그래서 올해는 아예 메모리 관리는 생각도 안 하고 나갔다. 근데 낭패. 탑 KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 ..

환타 오목 게임 재구성. (3)

일단 지난 번에 제가 바꿔 놓은 코드에 좀 문제가 있습니다. 누가 이겼는지 안 나오더군요.. 잘 되더니 왜 그러지;; 뭐 좀 바꿨더니 다시 됩니다만. /* five_in_a_row.h * by ZFanta & UNique */ #ifndef FIVE_IN_A_ROW #define FIVE_IN_A_ROW #include "tool.h" #define UP 72 #define DOWN 80 #define LEFT 75 #define RIGHT 77 #define ENTER 13 #define ESC 27 #define BOARD_SIZE 19 int x = 0, y = 0; int oldx = 0, oldy = 0; int board[BOARD_SIZE][BOARD_SIZE]; int turn = 1; c..

스킨 계속 바꾸는 중.

끄응. 1. 소스를 올려도 벗어나지 않을 만큼 충분히 넓은 건 필수. 2, 난 그래도 3단이 좋고.... 3. Moving Box 괜찮은 것 같은데 내 취향보다 좀 단순해. 4. 색깔은 개인적으로 Life Stand B나 crystalBlue가 좋은데 너무 좁아. 5. 사이드바도 달고 싶다능. Divergence 계속 쓰려다 관뒀지. 6. Daily T가 괜찮은데... 얘가 제목을 소화를 못 한다. 그냥 하나 만들어 버릴까. (

System Idle Talks 2009.06.13

블로그에 8086 어셈블러 (NASM) 게시하기

앞쪽에서 말한 바가 있지만, 이건 그냥 이렇게 따로 써 놓는 게 나을 것 같아서 말입니다. 1. SyntaxHighlighter를 설치합니다. 설치되어 있으면... 뭐. 그렇죠. 설치하시려면, 뭐 들보 님의 지나간 덧글에도 있지만, 블루앤라이브 님의 포스트 http://zoc.kr/547 가 큰 참고가 될 겁니다. 2. 티스토리라면, 압축을 푼 파일을 업로드하고 HTML/CSS 편집에 이런 코드를 추가하셨겠죠? 그러면 좀 더 바꿔 주시면 됩니다. 강조한 부분 중 는 새로 들어갈 코드입니다. 는, 취향에 따라서 css 파일 중 원하는 모양을 고를 수 있는 부분이고요. 그리고 제가 위에 첨부한 파일도 업로드하셔야 합니다:D 그니까 실제로 이미 설치하신 분이 syntax brush 추가하시려면, 그냥 부분 넣..

System Idle Talks 2009.06.10

환타 오목 게임 재구성. (2)

지난번 글에서는 move() 함수는 'move'답게 만들고 다른 함수가 move()를 반복하여 한 판을 조정하여, main()에서는 판을 반복하게 했습니다. 물론 제가 five_in_a_row()에 단 주석과 약간 다릅니다. 제 주석에 따르면 플레이어가 재경기를 원할 때 재경기를 시켜 줘야 합니다. 게다가 원래 게임과도 약간 달라져 버렸지요. 그.러.나. 그 점은 미뤄 두고, 일단 다른 부분을 시작하도록 하죠. (-_-ㅗ;;) 이번에는 판을 그리는 부분을 바꾸어 보겠습니다. switch-case 부분이 너무 길어서 저 내부를 한 함수로 빼낼 수 있으면 좋겠군요. #define BOARD_SIZE 19 void board_write(int x, int y) { x *= 2; gotoxy(x, y); if ..