분류 전체보기
코딩테스트 - [Swift] 다음에 올 숫자
다음에 올 숫자 문제 설명 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 제한사항 2
코딩테스트 - [Swift] 옹알이1(문자열)(.replacingOccurrences)
옹알이 (1) 문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 15 babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다. 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다. 문자열은 ..
코딩테스트 - [Swift] 전력망을 둘로 나누기
전력망을 둘로 나누기 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 ..
그래프, BSF 구현[Swift]
그래프 구현 문제를 풀다보면 그래프를 구현하여 DFS, BFS 알고리즘을 구현해야 할 때가 많다 간선배열, 노드의 개수로 그래프를 구현(인접 리스트, 무 방향성) 간선배열(wires)= [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 노드의 수(n) = 9 위와같은 모습의 그래프를 인접리스트로 구현하면 오른쪽 표처럼 구현할 수 있다. 표의 칠해진 부분은 노드의 번호, 칠해지지 않은 부분은 해당 노드와 연결된 노드다. 해당 리스트를 Swift 언어로 표현 var graph: [Int: [Int]] = [:] 딕셔너리 형태로 키, 벨류(배열)로 저장하면 된다. 그래프를 초기화 let wires= [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,..
코딩테스트 - [Swift] n^2배열 자르기
n^2 배열 자르기 문제 설명 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다. 정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요. 제..
프로그래머스 - [Swift] 예상대진표
예상 대진표 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다. 이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 ..
코딩테스트 - [Swift]여행경로(DFS)
여행경로 문제설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. 입출력 예ticketsreturn [["IC..
코딩테스트 - [Swift] 단어변환(BFS)
단어 변환 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 ta..
알고리즘 - 그래프 탐색 알고리즘 구현(DFS)[Swift]
1. 간선의 배열과 노드의 개수가 주어졌을 때 위 그래프를 인접행렬의 이차원 배열로 만든다면 아래와 같다. 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 //간선의 배열 let graph = [[1, 1, 0 ,0 ,0 ,0 ,0, 0], [1, 1, 1, 1, 0, 0, 0, 0], [0, 1, 1, 1, 0, 1, 0, 0], [0, 1, 1, 1, 1, 0, 0, 0], [0, 0, 0, 1, 1, 1, 1, 0], [0, 0, 1, 0, 1, 1, 0, 1], [0, 0, 0, 0, 1, 0, 1, 0], [0, 0,..
자료구조 - 그래프
그래프 그래프는 정점과 간선으로 구성되는 자료구조. 정점은 하나의 객체를 의미하며 Vertex 노드라고 표현한다. 간선은 정점과 전점을 이어주는 선을 의미한다. 용어 정점 : Vertex라고 하며 하나의 점을 의미한다 간선 : edge라고 하며 정점과 정점 사이를 이어주는 선을 의미한다. 정점의 차수 : 정점의 연결되어있는 간선의 개수 가중치 : 간선의 가중치 가중치 그래프 간선에 가중치를 보유한 그래프 방향 그래프 간선이 방향을 가지고 있는 그래프. 간선의 방향으로만 이동이 가능하다. 그래프를 표현하는 방법 인접행렬 정점의 개수 N에 대해 N * N의 사이즈로 0과 1로 구성된 이차원 배열을 사용하여 구해주는 방법. a라는 인접행렬을 만들었다면 a[i][j]의 값은 i번 정점에서 j로 가는 정점이 연결..