세상을 더 편리하게
article thumbnail
[프로그래머스 / Swift] 등상코스 정하기

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

article thumbnail
[알고리즘 /Swift] 우선순위 큐

0. 스위프트에는 왜 우선순위 큐가 없을까? 스위프트는 우선순위 큐가 기본적으로 없다. 정확히 말하자면 개념이 없다기 보다 구현이 안되어 있다. iOS 단독 언어인 주제에 구현되어있지 않다니... 이 이자식! 파이썬은 멀티 쓰레드 버전 / Unsafe 멀티 쓰레드 버전 구분되어 있어서 때에 따라서 다르게 쓰는데 스위프트는 없다. 그럼 직접 구현해야지 뭐... 힙을 이용해서 구현해보자. 1. 코드 import Foundation struct Heap { var nodes = [T]() var isEmpty: Bool { nodes.isEmpty } var sort: (T, T) -> Bool mutating func insert(_ ele: T) { nodes.append(ele) swapUp(nodes...

article thumbnail
[프로그래머스 / Swift] 미로 탈출 명령어

https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 접근 문제를 보아하니 DFS 혹은 BFS로 문제 풀 수 있을 것 같았다. 또한 알파벳 순서를 원했으니 d -> l -> r -> u 순서로 dfs를 순회했다. 그래서 DFS로 풀었고 대다수의 테스트 케이스에서 시간초과가 떴다. 틀리지 않았다는 것은 문제풀이 방향은 괜찮았다는 뜻이다. 그럼 예외처리를 해서 줄여야했다. 두 가지의 예외처리가 필요했다. 알파벳 순서대로 순회했으니 최초로 낸..

article thumbnail
[프로그래머스 / Swift] 표 병합

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 접근 사실 문제를 조금 해메었다. 설마 전체탐색을 하지는 않을텐데... 라는 생각이 머릿속에서 안 지워졌는데 50 * 50 이다 보니 전체 탐색을 사용해도 문제풀이에 큰 영향을 끼치지 않았다. 공식 풀이를 보아도 전체 탐색을 사용하는 것을 볼 수 있었다. 이 문제는 50X50 짜리 배열 2개가 필요하다. 1번째 배열(이하 값 배열) 은 값을 갖고 있는 배열 2번째 배열(이하 병합 배열)은 이 배열이 병합되었는지 정보를 갖고 있는 배열이다. 2번째 배열에 대해서 더 자세하게 설명하자면 j 행 i 열의..