생각원자들이 있고, 각 원자들은 상 하 좌 우 중 한 방향으로만 전진을 한다. 각각의 원자들이 가지고 있는 에너지를 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() 메소드를 구현하여 회전을 하였다. 다다음 생각회전을 구현 한 뒤, 암호를 구하기 위해 먼저 각 면의 암호들을 ..
생각처음 생각L시간 이하로 이동이 가능한 모든 경로를 살펴봐야 하므로 BFS 탐색을 선택하였다. 다음 생각data inner class를 하나 만들어 cnt를 통해 해당 cnt가 L을 넘어설경우 탐색을 종료하였다. 탐색을 하는 동안 queue의 아이템을 꺼낼 때마다 결과값을 +1 시켜주었다. 다다음 생각탐색은 총 7개의 Case로 나누어서 해당 Case에 알맞게 좌표 이동을 할 수 있도록 하였다. 다다다음 생각위와 같이 진행을 하니 결과값이 다르게 나오는 것을 볼 수 있었다. 무엇이 문제였을까? 방안1) 문제는 바로 무조건 다음 파이프로 이동한 것이었다.▶ 예를들어 '+' 모양의 파이프에서 왼쪽으로 이동하였을 때, 이동한 곳의 파이프 모양이 'ㅣ' 일 경우에는 이동이 되어서는 안된다. 따라서 이동할 수 ..
1) 생각 n개의 숫자와 n-1개의 연산자를 줄 때 만들 수 있는 가장 큰 숫자와 가장 작은 숫자의 차이를 구하여라(연산은 무조건 앞에서 부터 진행한다.) 처음 생각맨 처음 숫자를 필두로 1개식 연사자를 바꿔가며 모든 경우를 만들어 보면 되므로 재귀로 해결하였다. 2) 방안 1) 재귀의 인자를 4개의 연사자를 다 넣을지 배열로 넣을지 고민하다 그냥 다 넣었다.2) 재귀에서 가장 중요한 점은 가지치기 이므로 idx를 벗어나지 않도록 idx의 값이 n까지 다달으면 max와 min을 갱신해주고 return 해주었다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.io.IOE..
- Total
- Today
- Yesterday