본문 바로가기

Algorithm101

SW 역량 테스트 기출 문제(미세먼지 안녕) [미세먼지 안녕 _ 17144] * 조건 1초 동안 이루어지는 사이클은 [미세먼지 확산 -> 공기청정기 가동]이다 공기청정기는 2개 -> 상단 공기청정기는 반시계방향, 하단 공기청정기는 시계방향으로 바람을 가동한다 T초 이후의 남아있는 미세먼지의 양을 출력한다 * 알고리즘 - 미세먼지를 인접한 곳에 확산시키기: BFS - 공기청정기를 가동시켜 방향에 맞게 회전시키기: 시뮬레이션 * 로직(Logic) - 상단, 하단 공기청정기의 위치를 담고, 미세먼지가 존재하는 위치를 큐에 담는다 - 담긴 큐를 기반으로 미세먼지를 확산시킨다 - 확산시키면서 계산된 값들을 tmp 배열에 담고, 이를 map에 다시 덮어준다 - 덮인 map을 기반으로 공기청정기를 가동한다 - 회전 방향에 맞게 배열에 있는 미세먼지 값들을 이동.. 2019. 10. 16.
SW 역량 테스트 기출 문제(경사로, 톱니 바퀴) [경사로 _ 14890] * 조건 행, 열 기준으로 한줄로 이동해나갈 때, 기준점의 높이와 다음 칸의 높이 차이가 1을 초과하면 해당 경로는 지나갈 수 없다 높이 차이가 0이면 평면이기 때문에 그대로 이동 높이 차이가 1이라면 - 아래에서 위로 경사로를 설치하는 경우 - 위에서 아래로 경사로를 설치하는 경우 로 나눠야한다 경사로는 설치된 곳에는 다시 설치 불가능하다 경사로의 길이(L)만큼의 공간이 없다면 설치 불가능하다 지나갈 수 있는 경로의 개수를 출력한다 * 알고리즘 - 이동을 하고 경사로를 설치하는 과정을 진행: 시뮬레이션 * 로직(Logic) - 우선 (0,0)을 기준으로 행을 하나씩 이동시켜 경로를 지나갈 수 있는지 확인한다 (ex. (0,0) -> (1,0) -> (2,0) ...) - 하나씩.. 2019. 10. 15.
SW 역량 테스트 기출 문제(연산자 끼워넣기, 스타트와 링크) [연산자 끼워넣기 _ 14888] * 조건 피연산자와 연산자로 구성할 수 있는 모든 경우의 식을 구한다 계산된 값 중에서 최댓값과 최솟값을 출력한다 나누기 연산 시 부호를 고려해야 한다 * 알고리즘 - 주어진 연산자로 구성할 수 있는 모든 경우의 식을 도출: 브루트포스 * 로직(Logic) - 그동안 풀었던 모든 경우의 수 구하는 코드 적용 - 식이 사용되면 하나씩 차감을 하면서 남아있는 부호를 가지고 조합 진행 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.StringTokenizer; public class.. 2019. 10. 15.