백준

    16236_아기상어

    https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 이역시 이해는 하기쉬운 구현문제였다. 하지만 시간을 엄청엄청 많이 잡아먹었다... 다른부분보다 문제되는 부분은 바로 거리가 가까운 물고기가 많다면, 가장 위에 있는 물고기, 그러한 물고기가 여러마리라면, 가장 왼쪽에 있는 물고기를 먹는다. 해당 부분이다. 이부분을 매우매우 매우 유심해 봐야한다. 처음에는 그저 상,좌,우,하 순서로 bfs를 탐색하면 될줄 알았다. 하지만 이렇게 하면 틀리게 ..

    16235_나무제테크

    https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 알고리즘보다는 문제를 얼마나 꼼꼼히 읽고 그대로 구현할 수 있냐 문제였다. 되게 어이없는부분에서 막혔었다... 나무가 양분을 먹지 못하는 경우 전체 나무양분의 절반을 가져간다고 생각했는데, 각 개별 나무의 나이의 절반을 양분을 흙에 되돌려 놓기 때문에 한번에 더하면 안된다. 예를들어 [3,3] 와같은 나무 두그루가 죽어야한다고 생각하면 한번에 처리하면 6 // 2 => 3의 양분이..

    16234_인구이동

    https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 꽤나 헤맸었던 문제다.. 처음에는 유니온파인드로 풀까 하다가 결국 같은 집합을 만들어도 그들의 합으로 또 해당그룹의 수를 바꾸려면 두번 일해야한다는걸 깨닫고 그냥 bfs를 사용해서 그때그때 집합을 만들어 구현하였다. 시간초과나 메모리초과때문에 엄청 고생했는데 bfs를 맵에서 검사할때 한바퀴돌때 이미 집합에 넣어서 검사할 필요가 없는부분은 bfs를 검사하면 안되었었고, 특히 bfs안에..

    5373_큐빙

    https://www.acmicpc.net/problem/5373 5373번: 큐빙 각 테스트 케이스에 대해서 큐브를 모두 돌린 후의 윗 면의 색상을 출력한다. 첫 번째 줄에는 뒷 면과 접하는 칸의 색을 출력하고, 두 번째, 세 번째 줄은 순서대로 출력하면 된다. 흰색은 w, 노란 www.acmicpc.net 상당히 귀찮고 까다로운 문제였다. 이전에 주사위 문제를 풀었던 것과 유사하게 큐브의 전개도를 펼쳐놓고, 각 회전에 따른 방법을 함수로 하나씩 만들어서 구현했다. 문제를 겨우 통과하고 다른사람들 답을보니 함수를 굳이 12개 안쓰고 시계회전을 반시계회전을 3번하는 방식으로 만드는 것을 보았는데 되게 좋은방법이라고도 생각이 들었다.

    15685_드래곤 커브

    https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 조금 색다른 유형이었는데 푸는 과정이 재밌었던 문제였던 것 같다. 우선 결국 지도에 드래곤 커브들을 그려야 하는게 목표였던것 같다. 그래서 우선은 회전하는 방법에 대해서 생각을 해보았다. 어떤 좌표에서 특정좌표로 회전시키든, 0,0에서 회전시킨다고 생각 하고 다시 옮기면 회전시킨 좌표를 알 수 있다. 그런데 좌표의 회전은 결국, x,y좌표를 바꾸고 시계방향이라면 뒤에값에..

    15684_사다리조작

    https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 생각보다 되게 까다로운 문제였다... 2차원 배열을 하나 잡는데 이는 각 사다리간 사이에 사다리가 놓여져 있는지, 비어져 있는지를 나타낸다. 예를들어 위와같이 3개 사다리중에 2개만 연결되어 있다면 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 와같은 배열을 나타낸다. 이때 아래를 제외하고 0으로 감싸주면서 만드는 이유는 그래야 나중에 사다리를 놓을지 안놓을지 검사할때 index에러에..