세상을 더 편리하게
article thumbnail
[프로그래머스 / Swift] 파괴되지 않는 건물

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 접근 음 문제에 대해서는 누적 합의 개념을 모르면 효율성 테스트에서 넘어가지 못한다. 누적 합에 대한 정확한 개념은 공식 풀이를 보는게 오해의 소지가 없을 듯 하다. 2. 문제 풀이 더보기 import Foundation func solution(_ board:[[Int]], _ skill:[[Int]]) -> Int { var score = [[Int]](repeating: [Int](repeating: 0, count: board[0].count + 1) ,count: board.count + ..

article thumbnail
[프로그래머스 / Swift] 양과 늑대

문제 접근 while문 안에 마지막 것을 빼고 다시 또 다른 배열에 넣는 방식으로 접근하는 것이 Key포인트 였던것 같다. BFS로도 문제 풀이가 가능할 것 같기도 하다. 문제 풀이 더보기 import Foundation struct Node { var edges = [Int]() var animal: Int } func solution(_ info:[Int], _ edges:[[Int]]) -> Int { var answer = 0 var nodes = [Node]() for i in 0 ..< info.count { nodes.append(Node(animal: info[i])) } for line in edges { let parent = line[0] let child = line[1] nodes..

article thumbnail
[프로그래머스 / Swift] 코딩테스트 공부

문제 접근 이 문제는 DP 접근을 생각 못했다. 처음에는 다익스트라 알고리즘으로 접근하려고 했다. 돌이켜 생각해보니 DP로 접근하는게 더 직관스럽다고 생각된다. DP[alp][cop]은 ( 알고력 = alp / 코딩력 = cop )에 도달을 수 있는 최소 Cost를 의미한다고 했을 때 func solution(_ alp:Int, _ cop:Int, _ problems:[[Int]]) -> Int { var maxAlp = 0 var maxCop = 0 for line in problems { maxAlp = max(line[0], maxAlp) maxCop = max(line[1], maxCop) } let INF = Int.max - 100 var dp = [[Int]](repeating: [Int](..

article thumbnail
[프로그래머스 / Swift] 등상코스 정하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 접근 사실 이 문제는 출제자가 문제 해셜에서 한 번 꼬았다. 문제를 잘 읽어야 한다. 문제 설명을 보면 지점간의 가장 짧은 intensity를 얻고자 한다. -> 가장 최단거리로 갈 필요가 없다. -> 등산했던데로 하산해도 정답을 도출하는데는 문제가 없다. 즉, 출발지로 부터 도착지까지에서 지점과의 가장 짧은 intensity를 가진 경로를 구하면 되는 것이다. 여기서 한 번 꼬았다고 생각하는 것은 생각 없이 문제를 읽으면 2번째 예시에서 등산 코스와 하산 코스가 다르다. 출제자가 한 번 비틀었다고..