전체 글(169)
-
제31회 한국정보올림피아드 전국본선 (2014.7.11) 중등부 문제 1
문제는 더블릿 옥상에 있는 koi_path2014입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi_path2014/koi_path2014.php?pname=koi_path2014 행렬이 있을 때 K가 0이면 1행 1열부터 끝까지, K가 0이 아니면 K가 들어있는 행렬을 거쳐갈 수 있는 경우의 수를 구하는 문제입니다.행렬에서 첫 위치부터 특정 위치까지, 특히 오른쪽 혹은 아래로만 움직일 수 있는 경우는 자주 나옵니다.예로 보면 7의 위치로 갈 수 있는 경우의 수는 2의 위치까지 갈 수 있는 경우의 수 + 6의 위치까지 갈 수 있는 경우의 수입니다. 15는 10의 위치까지 갈 수 있는 경우의 수 + 14의 위치까지 갈 수 있는 경우의 수입니다.이런식으로 K가 0일 때를 ..
2015.01.09 -
제31회 한국정보올림피아드 전국본선 (2014.7.11) 초등부 문제 2
문제는 더블릿 옥상에 있는 koi_color입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi_color/koi_color.php?pname=koi_color 더블릿 다른 부류의 문제는 카테고리를 제목으로 쓰기 좋은데 옥상문제는 이전처럼 옥상 1, 2, 3하기가 좀 그래서 다르게 하기로했습니다.평면에 색종이를 하나씩 놓을 때 마지막 색종이까지 놓은 후의 각 색종이들의 보이는 영역을 출력하는 문제입니다.문제의 길이는 평균이상인데... 어렵지 않습니다.전역 변수로 배열을 잡아줍시다. 메모리가 64MB라는건 무제한이라는 것 같고. 색종이의 시작지점과 높이, 넓이를 입력받는데 문제에서 배열이 평소 자주 쓰는 인덱스로 되어있지 않습니다. 그래서 헷갈릴 수 있는데 어차피 넓이이므..
2015.01.08 -
dynamic programming 6
문제는 더블릿 21 dynamin programming에 있는 scv입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/scv/scv.php?pname=scv N*N의 맵의 왼쪽 위에서 시작하여 오른쪽, 아래로 움직이면서 최대한 많이 1을 거쳐갈 수 있도록 하는것이 문제입니다.전형적인 dp문제 중 하나로 힌트는 오른쪽 혹은 아래로만 움직일 수 있다는데에 있습니다. 오른쪽이나 아래로만 움직일 수 있으므로 map[i][j]번 째 scv는 map[i-1][j] 혹은 map[i][j-1]에서 온 것이 됩니다. 이 때 map[i][j]번 째의 scv가 많은 미네랄을 갖고 있으려면 map[i][j]에 미네랄이 있든 없든 우선 map[i-1][j] 혹은 map[i][j-1] 중에 많..
2015.01.07 -
함수 2
문제는 더블릿 8 함수에 있는 bpalin입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/bpalin/bpalin.php?pname=bpalin 1에서 100000사이의 수를 이진수로 바꿨을 때 그 이진수가 회귀수이면 해당 숫자를 출력하는 문제입니다.간단하게 1에서 100000까지 for문을 돌면서 값을 2진수로 바꿉니다. 2진수로 바꾼 값은 하나씩 char형 배열에 넣어주고 넣어준 크기를 카운트 한 다음에 처음과 끝, 처음+1과 끝-1, 처음+2와 끝-2를 하나씩 비교해주며 같지 않은 경우가 하나라도 있으면 회귀수가 아니라고 판단하고 넘어갑니다. 모든 비교 결과 전부 같으면 회귀수이므로 출력해주고 다음 값을 검사하면됩니다.
2015.01.07 -
dynamic programming 5
문제는 더블릿 21 dynamic programming에 있는 gc입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/gc/gc.php?pname=gc 입력으로 주어진 수 n을 1부터 n*2까지 차례대로 원 위에 쓰고 서로 엇갈리지 않게 선을 그을 수 있는 전체 경우의 수를 구하는 문제입니다. 이 문제에는 규칙이 있습니다. n=3일 때를 보면 1-2를 그었을 때 남은 숫자는 4개로 이를 서로 엇갈리지 않게 그을 수 있는 방법은 n이 2일 때와 같습니다. n=4일 때는 1-2를 그었을 때 남은 숫자가 6개로 이는 n=3일 때의 모든 경우의 수와 같습니다.즉 다음 경우의 수를 구하는데 이전 n값의 답을 구할 필요가 있습니다. 이 규칙을 보면 1->? 로 가는 선을 구하는데 ..
2015.01.06 -
배열 1
문제는 더블릿 5 배열에 있는 coci_modulo입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/coci_modulo/coci_modulo.php?pname=coci_modulo 배열에 속해있는 만큼 간단한 문제입니다.우선 받은 모든 수를 42로 나눠 나머지를 저장합니다.그리고 새로운 배열을 생성하여 첫 번째 나머지를 넣고 모든 수를 돌면서 해당 나머지가 새로운 배열에 있으면 넣지 않고 카운터를 하지 않으며 새로운 배열에 없는 나머지인 경우 그 나머지를 넣고 카운터를 합니다. 나머지는 0이 나올 수도 있으므로 새로운 배열은 0으로 초기화하면 안됩니다.
2015.01.04