본문 바로가기

Algorithm/Problem_SW31

모의 SW 역량테스트 (탈주범 검거) * 알고리즘 BFS 시뮬레이션 * 로직 각 구조물이 가지는 방향을 관리하는 배열을 생성한다 (structures[][]) 시계방향(북,동,남,서)에 대한 기본적인 방향 배열을 생성한다(directions[][]) 맨홀 뚜껑의 위치를 큐에 담고 BFS를 진행하면된다 현재 위치에서 이동 가능한 방향을 탐색한다 이동이 가능하다면 해당 방향으로 이동한다 이동할 곳이 연결 가능한지 판단한다 (이동할 곳의 구조물이 현재 방향에서 진행된 방향의 반대방향이 존재하는지) 연결 가능하다면 큐에 넣고 개수를 카운팅한다 bfs 로직이 끝나면 답을 출력한다 //탈주범 검거 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRe.. 2020. 3. 12.
모의 SW 역량테스트 (활주로 건설) * 알고리즘 시뮬레이션 * 로직 현재칸과 다음칸의 높이가 같다면 cnt++ 높이 차이가 1이고, cnt가 경사로 설치 가능 길이(X) 이상이라면 설치를 했다고 가정하고 cnt = 1로 초기화 높이 차이가 -1이라면 cnt = -X + 1을 통해 음수로 만들어 준 뒤 그 다음 재귀로 넘긴다 (다음 재귀부터 높이가 같다면 cnt++을 하다보면 0이 된 순간 경사로 설치 가능 여부를 구할 수 있음) (단, cnt >= 0 이어야 가능) 모든 조건에 부합하지 않는다면 possible = false 이를 반복한다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Str.. 2020. 2. 27.
모의 SW 역량테스트 (줄기세포) * 알고리즘 시뮬레이션 BFS * 로직 초기 상태에 존재하는 세포의 정보를 큐에 저장한다 이때, 한 시간마다 상태를 체크하기 위해 세포의 생명력(life)을 걸리는 시간(time)으로 설정한다 큐는 생명력이 더 큰 세포가 번식에 우위를 가지기 때문에 정렬 기준을 세워준다 큐에서 꺼냈을 때 현재 상태가 비활성화 상태라면 -> 세포의 time을 한 시간씩 차감하고 다시 큐에 넣는다 활성화 상태라면 -> 인접한 구간에 번식을 진행하고 세포의 time을 한 시간씩 차감한다 (이때, 해당 세포 time의 절댓값이 세포의 생명력과 같아진다면 큐에 넣지 않는다) K만큼 시간이 경과하면 큐에 저장된 세포의 개수를 출력한다 //줄기세포 배양 import java.io.BufferedReader; import java.i.. 2020. 2. 18.