더블릿(20)
-
배열 3 matti_block
문제는 더블릿 5 배열에 있는 matti_block입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/matti_block/matti_block.php?pname=matti_block 블록의 정면, 측면 사진이 있을 때 이러한 모양을 만들 수 있는 블록의 최소 수와 최대 수를 구하는 문제입니다. 최소수는 다음과 같이 구해질 수 있습니다.입력예를 보면4 2 0 3 11 1 2 3인데 높이 1짜리 인것이 정면에서 봤을 때 2개, 측면에서 봤을 때 1개 있습니다.그럼 최소한 높이 1짜리는 2개가 필요하단 것을 알 수 있습니다.높이 2는 각 한 개씩 있고 3도 한 개씩 있습니다.1짜리 2개, 2짜리 1개, 3짜리 1개. 각각 필요한 블록의 개수를 곱해서 다 더해주면 됩니다. 최..
2015.01.29 -
퀵 정렬, 이진검색, parametric search 1 aggressive
문제는 더블릿 10 퀵 정렬, 이진검색, parametric search에 있는 aggressive입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/aggressive/aggressive.php?pname=aggressive 우리의 위치와 소의 수가 주어졌을 때 소를 배치할 경우 소와 소의 가장 짧은 거리가 최대가 되는 때의 거리를 구하는 문제입니다. 1부터 입력받은 우리의 최대 위치까지 우선 정렬을 해야합니다. algorithm 헤더에 있는 sort를 이용했습니다. 이제 소를 놓을 수 있는 위치에 놓으면서 소와 소 끼리의 거리와 가능한지의 여부를 판단합니다.소와 소 끼리의 거리는 0과 우리의 최대 위치의 반 부터 시작합니다. 그럼 대략 처음 값은 500000000이 ..
2015.01.27 -
queue(bfs) 2 horse_knight
문제는 더블릿 14 queue(bfs)에 있는 horse_knight입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/horse_knight/horse_knight.php?pname=horse_knight 장기의 마와 체스의 나이트가 있고 이동할 수 있는 방향은 동일한데 마는 가는 길에 장애물이 있으면 갈 수 없습니다. 이때 출발지점부터 모든 칸에 대해 나이트가 마보다 빨리 갈 수 있는 칸의 수를 구하는 것입니다. 두 말 모두 갈 수 없으면 세지 않고 나이트만 갈 수 있는 곳은 나이트가 빨리 갔다고 간주합니다. 여기서는 모든 칸에 대해 라는 말이 있으므로 큐를 이용한 bfs를 씁니다. 각 위치와 각 위치별 이동 카운트를 가진 클래스 이용한 큐를 생성합니다. 그리고 첫번..
2015.01.24 -
배열 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