전체 글(168)
-
배열 2 dwarf
문제는 더블릿 5 배열에 있는 dwarf입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/dwarf/dwarf.php?pname=dwarf 9개의 수 중에서 2개를 빼고 모든 수의 합이 100이 되는 7개의 수를 구하는 문제입니다. 처음 재귀를 이용해 백트래킹처럼 모든 수를 돌면서 구하는데 분명 합이 100임에도 문제의 테스트케이스와 맞지 않아 답이 되지 않더군요.단순히 for문만으로 돌면서 풀었습니다.2개의 수를 제외할 것이기 때문에 제외할 2개의 수를 for문으로 놔두고 그 안에서 이 2수를 제외한 모든 수의 합을 구하고 이때 합이 100이면 출력해주면 됩니다.
2015.01.23 -
2012 지역 본선 고등 1/5 koi_aio
문제는 더블릿 옥상에 있는 koi_aio입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi_aio/koi_aio.php?pname=koi_aio 참가국, 학생 번호, 점수가 주어질 때 상위 3명을 구하는 문제입니다. 이때 같은 국가는 2개의 상만 받을 수 있습니다. 최근 문제는 특별한 알고리즘 기법보다는 그냥 구현문제가 주를 이루는 것 같네요. 이번 문제도 시키는대로 풀면 됩니다.입력을 모두 받고 2번째 까지는 상위2명을 아무런 제약없이 뽑습니다. 그리고 마지막 3번째 사람을 뽑을 때 상위 2명의 국가가 같은 경우 해당 국가는 뽑기에서 제외한다는 조건만 하나 더 주면 됩니다.
2015.01.18 -
2013 koi 초등 지역 본선 1/5 koi_bowl
문제는 더블릿 옥상에 있는 koi_bowl입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi_bowl/koi_bowl.php?pname=koi_bowl 그릇의 높이는 10으로 같은 방향으로 그릇이 쌓일경우 5의 높이가 추가되고 다른 방향으로 쌓일경우 10이 그대로 추가됩니다. 그릇이 쌓였을 때 전체 높이를 구하는 문제입니다. 간단한 if문으로 짤 수 있는 쉬운 문제입니다. 입력값을 다 받고 첫번째 값을 보고 10을 더합니다. 그 후 첫번째 값을 다른 변수에 저장해두고 다음값을 봅니다. 이 값이 이전값과 같으면 5, 다르면 10씩 더해주면 됩니다.
2015.01.17 -
graph, dfs 3
문제는 더블릿 16 graph, dfs에 있는 maze입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/maze/maze.php?pname=maze 전형적인 dfs로 풀 수 있는 이전에도 비슷한 문제를 풀었던것 같은데 갈 수 있는 길이 주어질 때 가장 빠르게 갈 수 있는 거리를 구하는 문제입니다. 배열의 크기와 갈 수 있는길(0), 없는길 (1)을 받습니다. 입력받는 방법도 다양하게 알아둬야 나중에 알고리즘 테스트시 입력가지고 시간을 소비하지 않을 수 있습니다. 여기서는 띄워쓰기 구분이 없는 숫자 형식으로 입력을 받는데 하나씩 받아야 하므로 %c로 받고 -'0'을 해줘서 숫자로 바꿔줍니다. 그리고 enter를 입력받지 않으면 안되는데 이것도 마지막에 입력받도록합니다.d..
2015.01.16 -
수학관련 1
문제는 더블릿 29 수학관련에 있는 jailer입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/jailer/jailer.php?pname=jailer 수학문제로 분류되어 있는데 그냥 시키는데로 풀어도 풀립니다.문이 있을 때 1부터 문의 수 까지 각 수의 배열은 문을 뒤집어 놓고 마지막까지 했을 때 열려있는 문의 개수를 구하는 문제입니다. 먼저 방을 나타내는 배열을 선언해둡니다. 0으로 초기화 될테니 이 상태를 닫혀있다고 봅니다. 그리고 for문을 돌려서 각 수마다 그 수의 배수인 인덱스는 값을 1로 반적시키고 1인것은 0으로 바꿉니다.문의 수만큼 실행한 다음에 값이 1인 인덱스의 수를 출력하면 됩니다.
2015.01.14 -
제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