#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl #풀이 완전 탐색을 통해 푸는 문제이다.N의 크기가 최대 10에 사람의 수가 최대 10명, 계단의 입구는 반드시 2개이기 때문에 가능하다. 일단, 2개 방식이 떠올랐다.모든 사람들을 사방으로 움직이며, 계단을 찾았을때 내려가는 방식을 생각해 보았는데... 이건 너무 터무니 없는 짓인것같아서 다른 방법을 생각하였다. 일단 M명의 사람이 어디 계단으로 갈지만 정한 다음 각자의 계단에서 따로 걸리는 시간을 구해주면 되는 방식을 떠올리게 되었다. 이렇게 한다면 계단이 무조건! 2개이므로 사람의 선택지는 2가지 즉 2^M시간이 걸린다..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRFInKex8DFAUo #풀이 굉장히 까다로웠던 문제이면서 시간이 엄청 오래 걸렸다. 시간 초과만 몇 번이 나왔는지 모르겠다..... 일단 원자들이 움직이는 것은 단순하다.진짜 일직선만 쭈우욱...나아가기 때문에 너무 얕잡아 보았다. 여기서 중요한 점이 있다. 만약 원자 하나는 [3,0]에서 왼쪽을 향해 가고있고 다른 원자는 [2,0]에서 오른쪽을 향해 가고있다면, [2.5,0]인 곳에서 원자가 부딪히게 되어 정해진 1초가 아닌 0.5초에 원자들이 만나게 된다. 이 문제로 인해 여러 가지 방식으로 접근하게 되었다. 처음에는 단순히 맵(2000X20..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo #풀이 문제를 본 순간, 아....딱 재귀호출을 이용하여 풀면 딱 답이 나오겠다...라고 생각을 하고 풀게 되었습니다. 일단, 맵의 경우 부딪쳤을 때를 대비하여 양옆과 위, 아래에 1씩 추가를 해주었습니다. 해당 위치에 들어가면, 벽에 부딪친걸로 판단하며 다시 되돌아오도록 하였습니다. 빠져나가는 조건으로 블랙홀과 시작지점이 있기 때문에 따로 저장을 하게 되었습니다.특히 블랙홀의 경우, 나중에 쉽게 찾기 위해 set으로 저장하였고,시작지점은 여러개의 시작 지점을 저장, 이를 탈출구로 인식하기 위해 하나씩 빼어 썻습니다. 다음 ..
#문제 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을 복사 하여야 합니다.(이유는 그 전 알고리즘 풀이에도 많이..