https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이: DFS로 모든 티켓을 소비한 경우에만 유효한 경로인 문제. 모든 노드가 연결되어야 하고 사전순으로 가장 빠른 경로가 답이므로, 티켓 배열을 정렬한 후 dfs로 출발하는 노드를 찾은 후 path에 추가한 후 다시 해당 함수를 호출하는 식으로 문제를 해결. import Foundation func dfs(_ ticket: [[String]], path: [String]) -> [Strin..
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] = ..