생각원자들이 있고, 각 원자들은 상 하 좌 우 중 한 방향으로만 전진을 한다. 각각의 원자들이 가지고 있는 에너지를 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) 문제는 바로 무조건 다음 파이프로 이동한 것이었다.▶ 예를들어 '+' 모양의 파이프에서 왼쪽으로 이동하였을 때, 이동한 곳의 파이프 모양이 'ㅣ' 일 경우에는 이동이 되어서는 안된다. 따라서 이동할 수 ..
생각2차 배열로 주어진 등산로에서 가장 긴 등산로를 찾는 문제이다. 등산로는 높은 숫자에서 낮은 숫자로만 이동할 수 있다. 이 때, K 값이 주어지는데 이 K는 한 등산로를 만들 때 한 번만 사용할 수 있는 지형을 파괴할 수 있는 높이이다. 만약 처음 등산로가 9로 시작하면 근처에 있는 9로는 못가게되지만 파괴를 한 번 할 수 있는 기회를 사용해서 K=1 일 경우 다음 9를 8로 만들어서 진행 할 수 있다. 처음 생각우선 List를 이용해서 처음에 등산로의 숫자를 입력받는 부분에서 가장 높은 숫자가 나오면 List에 추가해 주어 등산로의 출발 경로를 설정하였다.▶ Max가 바뀔 경우 List를 초기화 하여 이전 출발 경로들을 없애고 새로 넣어준다. 다음 생각등산로의 출발 점을 하나씩 DFS 탐색하면서 가..
- Total
- Today
- Yesterday