생각길이가 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..
생각로봇 청소기가 있다. 이 로봇 청소기는 아래와 같은 연산으로 청소를 진행한다. 청소를 하지 않은 지역은 '0' 벽은 '1'로 표신된다. 1. 현재 위치를 청소한다. 2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다. 1) 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. 2) 왼쪽 방향에 청소할 공간이 없다면, 그 방향으로 회전하고 2번으로 돌아간다. 3) 네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진을 하고 2번으로 돌아간다. 4) 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춘다. 이 때 로봇 청소..
생각상원이의 생일 파티가 열린다! 상원의 친구와 그 친구의 친구까지 초대할 수 있다. 초대장이 총 몇 장 필요한지 출력하시오 처음 생각친구들을 모두 초대할 수 있는 지 알아 연관된 친구들을 다 초대하기위해 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 까지 들어온 자료들은 초대장을 주어야하므..
생각4개의 톱니바퀴가 있다. 그 중 한 개를 돌린다고 할 때 양 쪽에 있는 톱니바퀴들은 해당 톱니가 같은 톱니로 짝이 이루어져있으면 돌지 않고 다른 톱니로 짝이 이루어져있으면 돌게된다. 처음 톱니바퀴의 상태를 주고, K개의 회전 케이스를 주고 모든 회전을 마쳤을 때 각 톱니바퀴의 12시 방향의 숫자 합을 번호 순서대로 1,2,4,8을 곱한 값을 출력하여라. 비고 사항삼성 SW 테스트 기출이라고 한다. 처음 생각우선 톱니바퀴의 상태가 10101111 이런 형태로 주어져 있고, 톱니바퀴는 4개로 제한되어 있으므로 [4][8] 형태의 이차 배열로 입력을 받았다. 다음 생각톱니바퀴의 회전 케이스가 K개 만큼 들어온다. 전부 동시에 회전하는것이 아닌 각각의 회전 케이스이므로 solve() 메소드를 각각 실행시키도..
생각금액이 다른 동전 N개와 원하는 금액 K가 주어진다. N개의 동전들을 최소한으로 사용하여 K를 만들 때 그 최소한의 동전수를 출력하여라. 만들 수 없을 경우 -1을 출력한다. 처음 생각DFS를 통해 풀이를 하였으나 시간 초과가 나왔다. 다음 생각이런 동전류의 문제는 이전 값을 계산해서 나아가는 다이나믹 프로그래밍(DP) 방식을 사용해서 푸는 경우가 많으므로 DP로 접근하였다. 다다음 생각동전의 숫자를 구하는 것이므로 이 금액을 만들 수 있나의 개수를 파악하면서 가는것이 아닌 이 금액을 몇 개의 동전으로 만들 수 있나를 파악하면서 가도록 진행하였다. 자세한 설명은 코드상에 주석으로 달아 놓았습니다.다다다음 생각따라서 DP를 구하기에 앞서 DP에 해당 Index 1~K 일 때, 주어진 동전의 배수를 미리..
생각처음 생각L시간 이하로 이동이 가능한 모든 경로를 살펴봐야 하므로 BFS 탐색을 선택하였다. 다음 생각data inner class를 하나 만들어 cnt를 통해 해당 cnt가 L을 넘어설경우 탐색을 종료하였다. 탐색을 하는 동안 queue의 아이템을 꺼낼 때마다 결과값을 +1 시켜주었다. 다다음 생각탐색은 총 7개의 Case로 나누어서 해당 Case에 알맞게 좌표 이동을 할 수 있도록 하였다. 다다다음 생각위와 같이 진행을 하니 결과값이 다르게 나오는 것을 볼 수 있었다. 무엇이 문제였을까? 방안1) 문제는 바로 무조건 다음 파이프로 이동한 것이었다.▶ 예를들어 '+' 모양의 파이프에서 왼쪽으로 이동하였을 때, 이동한 곳의 파이프 모양이 'ㅣ' 일 경우에는 이동이 되어서는 안된다. 따라서 이동할 수 ..
- Total
- Today
- Yesterday