#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo #풀이 큐를 사용하여 매시간마다 세포들을 체크하며 배양해 나아갔다. 첫번째 난관은 배열의 크기를 정하는 것이었다.해당 문제에서 배열의 최대 크기를 정해주지 않았기 때문에 알아서 만들어야한다. 세포의 경우 초기 위치가 최대 크기가 50X50 이란 것을 주었고, 시간이 최대 300이란 것이 주어졌으므로 배열의 최대 크기를 구할 수는 있다.일단 50X50크기의 배열에 생명이 1인 세포들이 전체 있다고 했을때, 세포들은 활성화 시간에 번식을 한다.따라서, 2초에 크기는 1씩 커지는 셈이다.그렇기에 최대로 커질 수 있는 높이는 150..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo #풀이 전체적인 틀은 완전 탐색을 통하여 풀었다.구슬의 개수가 4개에 맵의 전체 크기가 12X15 이였고, 구슬을 떨어트릴때는 W만 보면 되기 때문에 완탐이 가능하다. 처음에 구슬이 블록을 터트렸을때 어떻게 해야될지 고민을 많이 했고, 시간도 많이 잡아 먹었다.BFS가 바로 떠올랐지만, 구현하는데에도 많은 시간이 걸렸다. 많은 연습만이 살길이다!.... 먼저 어떠한 위치에 구슬을 떨어트리고 위치에서의 맵의 값이 0이면 다시 자신을 호출하여 다음 칸으로 이동한다. 만약 0이 아닌 점을 만나게 되면, 큐에 넣는다. 그 후에 4방..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo #풀이 문제를 따라 구현을 하면 되는 문제이다.딱히 어떤 방법을 사용하지 않고 풀었습니다. 일단 문제를 보게 되면, 문자열은 무조건 4등분 하게 되어있습니다.여기서 중요한 점은 만약 N이 12일때, 한 칸에 3개의 수가 존재하게 되는데 3번 회전을 하게 되면 처음에 만들어진 16진수와 같아지게 된다. 따라서, N/4만큼만 회전을 시키면 모든 16진수를 알 수 있게 된다. N/4만큼 돌리면서 주어진 문자열은 무조건 4등분 하여야한다.(여기서 실수 하여서 런타임 에러가 계속 났었다 :( )등분을 할때 assign 메소드를 사용하..
#문제https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo #풀이오랜만에 SW Expert에서 문제를 풀었더니...너무 힘들었습니다. 굉장히 쉬운 문제로 보였으나... 푸는 시간이 너무나도 오래 걸렸습니다. 해당 문제는 완전 탐색으로 풀 수 있습니다. 맵의 크기도 10 * 10이며, BC의 개수도 8개로 작기 때문에 가능합니다.풀이의 핵심은 시간마다 A,B 따로따로 충전량을 저장하는 것이 아닌 합쳐서 비교합니다. 어차피 마지막에 모든 충전량을 다 더해 주어야기 때문에 이런 방법으로 할 수 있는 것이죠.일단, A와 B가 해당 위치에서 충전을 받을 수 있는 BC들을 구합니다. 거리 안에 ..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V1SYKAaUDFAWu #풀이모의 SW 역량 테스트 문제들중 하나 입니다. 역시 삼성 문제스럽게 나왔습니다. 저는 이 문제를 완탐으로 풀었습니다. SW 역량 테스트관련 알고리즘들을 푸는지라... 계속 완탐 문제만 푸는것 같습니다...... 문제 해결 방식은 다음과 같습니다.각 막에서 약품을 안뿌리고 넘어갈 것인가? 아니면 뿌리는데 A를 뿌릴것인가, B를 뿌릴것인가총 3가지 길로 나누어 모든 경우의 수를 돌렸습니다. 이 때, 중요한 점이 있습니다. 완전 탐색을 하기 위해서는 그전의 film을 복사 하여야 합니다.(이유는 그 전 알고리즘 풀이에도 많이..
# 문제https://www.acmicpc.net/problem/15683 # 풀이완전탐색을 통해 풀었습니다. 일단, CCTV의 종류와 위치를 따로하여서 vector에 저장했습니다.그 후에 모든 CCTV를 돌면서 CCTV가 감시할 수 있는 모든방향을 검사하여 사각지대를 찾습니다. CCTV의 종류마다 감시하는 구역이 중복되는 것을 눈치 채셨나요?저는 1번, 3번,4번 카메라는 4방향 모두 돌려서 확인을 해주어야 되지만, 2번은 두번만 5번은 회전을 하지 않게끔 처리하였습니다. dfs() 에서는 인자로 cnt를 가지고 있습니다. 이 인자는 현재 몇번째 CCTV까지 검사하였는지 나타냅니다. 그렇다면 재귀 함수의 종료 조건은 쉽게 찾아 낼 수 있겠죠? 저는 cnt > (int)cctv.size()-1 일때! 종..
문제 https://www.acmicpc.net/problem/15686 풀이해당 문제는 완전 탐색을 통해 풀었습니다. 문제 해결 방법은 우선 집과 치킨집의 좌표를 vector를 사용하여 받았습니다. 그 뒤에 재귀를 통해 전체 치킨집 중에서 M개를 고르고, 고른 좌표들은 따로 저장을 하였습니다.(거리를 잴때 골라진 치킨집만 계산을 하기 위해!) M개가 다 선택되면 한번에 거리를 계산하고 최소 거리를 구합니다. 핵심적인 부분은 47~51 라인입니다. # select 함수에서 인자로 k를 넘긴 이유는 중복 선택을 없애고, 순서가 상관 없기 때문입니다. 예를 들어 치킨집이 5개가 있다고 하고 이중 3개를 골라야된다고 해봅시다.1,1,1 치킨집은 치킨집이 3개가 아니라 1개이므로 중복을 없애 주었습니다.따라서 ..
문제 문제 링크: https://www.acmicpc.net/problem/14503 처음에는 재귀를 이용해서 풀려고 했었지만, 실력부족으로 인하여 while문을 사용해서 움직였습니다.처음에 주어진 입력으로 로봇 움직임을 보려고 개 뻘짓도 해보고... 엑셀에 그려가면서 하나하나 체크 했던것 같습니다.DFS문제들만 풀면 무한 루프에 빠지는게 대다수였던것 같고 이 문제 또한 그랬습니다... ㅠㅠ 엑셀에 그려가면서 했던것입니다.. 다 못할꺼 같아서 무한 루프가 생겼던 점까지 해보았습니다. 문제가 2-3 조건에서 뒤로 갔을때, 이미 체크 되어있는 것을 생각을 못하는 정말 바보같은 실수를 했습니다.가로 안은 로봇이 움직이는 순서입니다. 방향은 해당 위치에서 턴 할때마다 적어 놓았습니다. 움직일 방향 배열의 순서도..
문제 문제 링크: https://www.acmicpc.net/problem/14500 DFS로 문제를 푸는 것은 인지를 하였으나, 직접적으로 코딩을 하지는 못하였습니다.오늘도 많은 부족함을 느끼는 날입니다. 열심히 하다보면 자연히 늘겠죠...? 문제에 대해 검색해보니 많은 분들이 DFS를 사용하여 풀었습니다. 혹시 문제를 보고 바로 오...하나가 이상하네? 라고 찾으신 분은 DFS에 대해서 정확히 이해 하셨을꺼라 생각됩니다.저는 검색을 하고나서야 알게 되었네요...ㅎㅎㅎ;; ㅗ 모양은 DFS로 탐색이 불가능합니다. 따라서 ㅗ 모양만 다른 방법으로 찾아야합니다.살짝 문제를 꼬아낸것 같습니다. 도형을 탐색 하면서 해당 칸의 수를 더해가면서 최댓값을 구하면 되는 문제였습니다.찾아보면 또..은근 쉬워 보입니다...
문제문제 링크: https://www.acmicpc.net/problem/14501 문제를 보면 DP로 풀 수 있다는 것을 알 수 있습니다.검색을 해본 결과 DFS로도 풀 수 있다는 것을 알게되었습니다.문제를 풀때 꼭 한 방법만이 아닌 다른 방법도 생각하는 습관을 들이는 것이 좋을것 같습니다.ㅎㅎ;; 이 문제는 상담을 하거나 안하거나 둘중 하나를 고르는 것이 관건인 문제입니다. DP의 경우는 점화식을 세워서 문제를 풀며, 점화식은 max(dp(day+1), dp(day+T[day])+P[day]) 입니다.전자 의 경우는 상담을 안 하였을때의 식이며, 후자의 경우는 상담을 하였을 때의 식입니다.T[day]는 해당 날짜의 상담을 했을 경우 걸리는 시간이며, P[day]는 그에 따른 보수입니다. DFS 경우에..