https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이: UnionFord 알고리즘을 기반으로한 크루스칼 알고리즘을 이용한 풀이. 경로를 가중치 순서대로 정렬 한 후, 가장 저렴한 경로부터 선택한다. 이때, 사이클이 만들어지는지 확인. 연결하려고 하는 노드와 연결되는 노드간에 부모가 같다면 사이클이 생기는 것 이므로 unionFord 알고리즘을 이용해 부모를 확인한다. import Foundation var parents: [Int] = [..
https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이: 1번 노드를 시작점으로 각 노드마다 1번 노드와의 최단 거리를 구하는 것이 문제의 핵심. 1번 노드를 시작으로 BFS로 연결된 노드들을 큐에 넣어주고, 넣은 노드는 방문 처리해준다. 가장 처음에 만났을때가 최단 거리니까.. 한가지 주의해야 할점은 n이 최대 20000개 이므로 각 노드별 연결되있는지 안되있는지 Bool로 판단하면 시간 초과가 뜨기 때문에 1 -> {1,2,3} 2 ->..
https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이: bfs로 주어진 문자 배열과 변환해야 하는 문자를 Array로 분리시켜서 서로 틀린 부분을 비교. 틀린 부분이 2개 이상이면 큐에 넣지 않는 방식으로 문제를 풀이 import Foundation struct Word { let count: Int let word: String } func checkCanConvert(_ start: String, _ target: String) -> ..
https://school.programmers.co.kr/learn/courses/30/lessons/43162# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이: 서로 연결되어있는 컴퓨터의 네트워크 개수, 즉 집합이 몇개 있는지를 물어보는 문제. Union ford 알고리즘을 이용해 풀었다. 한가지 주의할 점은 마지막에 각 컴퓨터가 연결되어있는 부모가 어떤것인지 체크하는 작업을 해 주어야지 정확한 네트워크 개수가 나온다. import Foundation func solution(_ n:Int, _ computers:[[Int]]) -> Int..
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이: 처음에는 dfs방식으로 문제를 풀었지만 잘 안되서 피보나치와 비슷하다는 문제인 걸 알아서 dp로 문제를 해결. dp[n]은 n번째 위치에 있을때 마지막까지 갈 수 있는 방법의 수를 의미한다. var dp: [Int] = Array(repeating: 0, count: 2002) func solution(_ n:Int) -> Int { dp[0] = 0 dp[1] = 1 dp[2] = ..
https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 문제 풀이: 기존 최단경로 찾기 문제와 비슷하지만, 다른 점이 있다면 물이 시간이 지남에 따라 확장된다는 점이다. 따라서 Queue에서 어느 시점을 꺼내지만, 해당 시점이 2의 시간이 지난 후일수도, 3의 시간이 지난 후 일수 있다. 이에 시간에 지남에 따라 물이 번진 지도를 3차원 배열로 만들어서 큐에서 꺼낸 시간의 지도 상태값을 가지고 올 수 있도록 구현했다. import Foundation enum Bl..