생각벽돌깨기 게임을 진행한다. 각 벽돌이 아닌칸은 0으로 주어지며, 각 벽돌이 가지고있는 숫자(1~9)는 자신의 숫자-1 만큼 상하좌우의 벽돌을 연쇄로 깰 수 있다. 공을 쏠수 있는 횟수(1~4)와 벽돌의 맵의 크기 w,h(2~12)가 주어졌을 때, 최대한 많은 벽돌을 깬 후 남은 벽돌의 개수를 출력하여라. 처음 생각바로바로 풀 수 있는 문제들보다는 문제를 읽고 처음부터 생각을 해야하는 문제들이 나오는 추세인것 같다. 어떻게 벽돌을 많이 깰 수 있도록 공을 쏠 수 있을까?를 생각해보았다. 위에서 부터 한 줄씩 읽으면서 숫자가 큰게 나오면 없애주면 될까? 이건 반례가 너무 뻔히 보였다. 1 밑에 9같이 큰게 숨어있을 경우 안되기 때문이다. 그럼 어떻게 해봐야 할까..! ▶우선 브루트포스(완전탐색)을 살펴보..
생각길이가 N인 암호가 주어지며 이 암호는 4의 배수이다. 면이 4인 보물 상자 뚜껑이 주어지고 N인 길이의 암호가 이 뚜껑을 감싸고 있을 때, 시계 방향으로 뚜껑을 회전 시키면 적혀있는 암호가 1자리씩 시계 방향으로 이동한다. 이때, 한 면씩 적혀있는 16진수를 10진수로 바꾸었을 때, 회전하여 구할 수 있는 모든 수중 K 번째 큰 수가 암호이다. 이 암호를 구하여라. 처음 생각처음에 뚜껑의 4면으로 나누는게 이해가 안갔었다. 주어진 암호가 4의 배수이므로 4로 나누어서 몫만큼씩 한 면으로 생각하면 됐다. 다음 생각시계방향 회전을 해주어야하므로 배열을 이용해서 암호들을 넣었다. rotate() 메소드를 구현하여 회전을 하였다. 다다음 생각회전을 구현 한 뒤, 암호를 구하기 위해 먼저 각 면의 암호들을 ..
생각줄기세포배양 시뮬레이션을 만드려고한다. 각 줄기세포는 생명력을 가지고 있다. 처음 배양의 크기는 세로 N 가로 M으로 주어지고 배양 시간은 K로 주어진다. 세포의 생명력이 X일 경우 해당 세포는 X초 뒤 활성화 뒤어 상하좌우로 번식을 한다(동시에 같은 셀에 번식을 할 경우 높은 생명력을 가진 세포가 번식한다). 그리고 다시 X초 뒤에 해당 세포는 죽는다.이때 첫 상태가 주어지고 K 시간이 지났을 때, 살이있는 세포의 수(활성 + 비활성)를 구하여라. 배양 용기의 크기는 무한하다. 처음 생각처음에 딱 최대 크기가 적혀있지 않아 배열의 크기를 어떻게해야하나 고민을 하였다. 다음 생각우선 시간, 생명력, 생명력이 깍이면서 변하는 숫자, 좌표 등의 정보가 있어야 하므로 Pair class를 따로 만들어주었다..
- Total
- Today
- Yesterday