생각미생물이 담긴 N 크기의 배열과 안에 들어있는 미생물 군집들이 주어진다. 군집은 상 하 좌 우중 한 방향으로만 움직이며, N 배열의 가장 바깥줄(경계면)에 도달하면 현 생명력이 반절로 줄어들고 움직이는 방향은 반대 방향이 된다.(소수 단위는 절삭한다) 군집들은 1초에 한 칸씩만 움직이며 M 초동안 움직인다. 군집들이 한 칸에서 만날경우 미생물 수가 합쳐지며 방향은 가장 큰 군집이 가던 방향으로 결정된다. 군집이 서로 지나칠 경우는 만나는 경우가 아니다. 이 때, M 초후에 남아있는 미생물의 수를 구하시오. 이전 생각이전에 풀어보았던 문제인 (모의 SW 역량테스트] 원자 소멸 시뮬레이션) 와 상위호환? 하위호환? 되는 비슷한 문제이다. 요 문제의 경우는 무조건 부딪히는 원자와 다르게 서로 마주보고 있으..
생각원자들이 있고, 각 원자들은 상 하 좌 우 중 한 방향으로만 전진을 한다. 각각의 원자들이 가지고 있는 에너지를 K 라 할 때, 둘 이상의 원자가 부딪히면 그 원자들의 K 값이 방출된다. 이 때, 방출된 K 값의 총합을 구하여라. 풀이후 생각어마어마 한 문제였다. 사진 한 장이 말을 대신해 준다. 제출이 17차지 머가 잘못됐는지를 찾기위해 질문도 올렸었다. 답변해주신 분들에게 감사합니다!결론부터 살펴보면 너무 어렵게 생각했다가 맞는 표현인 것 같다. 하지만 한 생각에 사로잡히면... 잠시 다른건 보이지 않는다는걸 이번에도 느끼게 되었다. 그래도 오류를 찾아서 PASS 시키면 묘하게 이맛에 문제푸나? 생각이 들기도 한다.▶ 우선 K=0인 값이 존재해서 오류 제보를 했다. 처음 생각좌표 평면이 마이너스 ..
생각벽돌깨기 게임을 진행한다. 각 벽돌이 아닌칸은 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를 따로 만들어주었다..
생각백준의 다음 문제와 같은 문제이다. [백준] 14891번 톱니바퀴 처음 생각이미 풀어봤던 유형이여서 그 생각 그대로 풀이를 하였다.▶풀어봤던 문제들은 접근이 빠르므로 해당 테스트를 본다면 기출은 꼭 풀어보고 들어가면 좋다고 다시 생각해보았다. ▶답을 보고 풀어보더라도 자신의 것으로 만들 수 있도록 보고나서 이해한 다음 다시 풀어보는것이 좋다. 다음 생각처음에 방문 배열을 만들어 주지 않아서 예제를 제출했을 때, 메모리 초과 오류가 나왔다. 방안1) 방문 배열을 만들어줘서 이미 돈 자석은 다시 돌지 않도록 해주었다.2) solve의 매개값으로 번호를 넣어줄 때, 입력의 번호는 1번부터 주어지므로 -1을 해주고 나서 넘겨주었다. 123456789101112131415161718192021222324252..
생각주어진 조건에 맞게 활주로를 건설하여라. 처음 생각index의 숫자 값을 temp 변수에 저장시키면서 가로 완전 탐색한 뒤 세로 완전 탐색을 생각하였다.▶ 비교를 해나가면서 만족 조건을 따져줘야하기 때문에 완전탐색을 하였다. 다음 생각현재 index의 숫자 값을 기준으로 +1, -1, 같은지, 그 외 의 조건을 나누었고, 그 외 조건은 활주로의 높이가 1이기 때문에 바로 break 문으로 빠져나가 다음 줄을 검사하였다. 다다음 생각낮은 곳에서 +1되는 높은 곳으로 올라갈 때는 이전 까지 갯수를 센 것을 x값과 비교해서 바로 체크를 하면 됐는데, -1로 낮아지는 경우는 조금 난해했다.▶ boolean형 변수인 flag를 하나 더 만들어서 낮은 조건을 따져야 하는건지 체크하였다. 다다다음 생각여기까지하니..
생각레이저는 '()'로 주어지고 쇠막대기의 시작은 '(' 끝은 ')'로 주어진다. 이 때 레이저로 총 몇 마디의 쇠막대기로 잘리는지 출력하여라. 처음 생각문자열로 입력이 주어지므로 문자열을 받아 하나씩 확인을 해보아야 한다. 다음 생각쇠막대기와 레이저 둘 다 시작이 '(' 이므로 해당 index의 다음 번호까지 확인하여 레이저인지 판별해준다. 쇠막대기일 경우 해당 변수 n을 증가시켜주고 레이저일 경우 결과 변수 result를 n만큼 더해준다. 다다음 생각쇠막대기가 끝나는 ')'일 경우 쇠막대기 변수 n을 -1 시켜주고, 끄트머리가 남으므로 result 변수를 +1 시켜준다. 방안1) 쇠막대기가 끝나는 부분도 1마디가 되므로 +1을 주의하여야 한다. 1234567891011121314151617181920..
생각상원이의 생일 파티가 열린다! 상원의 친구와 그 친구의 친구까지 초대할 수 있다. 초대장이 총 몇 장 필요한지 출력하시오 처음 생각친구들을 모두 초대할 수 있는 지 알아 연관된 친구들을 다 초대하기위해 DFS로 탐색을 진행하여 구현하였다. 다음 생각DFS로 탐색을 하니 안되는 케이스가 있어서 살펴보니, 친구의 친구 까지만 초대장을 줄 수 있었고 다음과 같은 반례도 있었다. 1 2 1 3 2 3 3 4위와 같은 Case의 경우에 DFS로 탐색시 1 - 2 - 3 으로 끝나는 반면 BFS로 탐색시에는 1 - 2 - 3 - 4 로 탐색이 되어진다. 다다음 생각따라서 BFS로 구현을 하고 카운트 변수 cnt를 +1시키면서 진행하여 처음 값을 1로 주었으므로 1-2-3 까지 들어온 자료들은 초대장을 주어야하므..
생각처음 생각L시간 이하로 이동이 가능한 모든 경로를 살펴봐야 하므로 BFS 탐색을 선택하였다. 다음 생각data inner class를 하나 만들어 cnt를 통해 해당 cnt가 L을 넘어설경우 탐색을 종료하였다. 탐색을 하는 동안 queue의 아이템을 꺼낼 때마다 결과값을 +1 시켜주었다. 다다음 생각탐색은 총 7개의 Case로 나누어서 해당 Case에 알맞게 좌표 이동을 할 수 있도록 하였다. 다다다음 생각위와 같이 진행을 하니 결과값이 다르게 나오는 것을 볼 수 있었다. 무엇이 문제였을까? 방안1) 문제는 바로 무조건 다음 파이프로 이동한 것이었다.▶ 예를들어 '+' 모양의 파이프에서 왼쪽으로 이동하였을 때, 이동한 곳의 파이프 모양이 'ㅣ' 일 경우에는 이동이 되어서는 안된다. 따라서 이동할 수 ..
- Total
- Today
- Yesterday