본문 바로가기

Algorithm/Problem_SW31

SW 역량 테스트 A형 기출 문제 (다리 만들기 2) [다리 만들기 2 - 17472] * 로직 모든 섬을 연결하는 다리 길이의 최솟값이 이 문제의 핵심이다 각각의 섬을 노드라고 생각하고 연결된 다리를 간선으로 생각했을 때 "최소비용 신장트리"가 떠올랐다 우선, BFS를 활용해 각각 밀집해있는 덩어리들에 섬 번호를 부여해준다 이후, 섬에서 다른 섬으로 연결되는 간선의 최솟값들을 갱신하고 그래프와 간선 정보를 넣어준다 최소비용 신장트리를 위한 알고리즘을 진행한다 크루스칼 알고리즘 프림 알고리즘 (V) 만약 제대로 섬이 연결되지 않았다면 -1을 리턴한다 // A형 기출문제(다리 만들기 2) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp.. 2020. 4. 22.
모의 SW 역량테스트(수영장) [수영장] * 로직 재귀를 사용해 DFS를 돌려 모든 경우의 수를 고려하면 된다. 우선 1월~12월까지 모두 수영장을 이용하는 일수가 존재하지 않다면 -> answer = 0으로 리턴한다 만약 존재하는 상황이라면 우선적으로 1년 이용권을 사용한 경우로 answer를 갱신한 뒤 재귀함수를 진행한다 현재 index의 값(Month[])이 0이라면 -> 값 갱신 없이 다음 index를 호출한다 1 이상이라면 -> 3가지 경우를 호출한다 1일 이용권 사용하는 경우 1달 이용권 사용하는 경우 3달 이용권 사용하는 경우 위 과정을 반복하며 최솟값을 갱신한다 // 수영장 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr.. 2020. 4. 16.
모의 SW 역량테스트(점심 식사 시간) [점심 식사 시간] * 로직 계단 1과 2로 갈 수 있는 사람들의 모든 경우의 수를 구한다 각 경우의 수가 구해질 때마다 로직을 진행한다 계단 1과 2를 목적지로 하는 사람들에 대해 -> 도착하는데 걸리는 시간을 갱신한다(limit) 시간을 1분씩 늘려나가면서 계단 1을 내려가고 있는 사람이 존재한다면(큐) 각각 1분씩 늘려주고, 만약 다 내려갔다면 pop & cnt++를 해준다 계단 1을 목적지로 하는 사람들의 시간을 1분씩 늘려주고 만약 계단에 도착했다면 이미 계단 1에 3명이 꽉찼다면 -> 1분 감소시키고, wait 표기를 해준다 공간에 여유가 있다면 -> 계단 1 큐에 넣어준다 (대기를 하는 사람의 경우 계단 1의 큐가 빈 경우 바로 내려갈 수 있기 때문에 wait 표기가 있다면 바로 진입하게끔 .. 2020. 4. 10.