본문 바로가기

Study/알고리즘

(9)
[프로그래머스] 42748. K번째 수 (swift) 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 주어진 요구사항 그대로 구현하면 되는 쉬운 문제이다. map을 사용해서 다시 풀어보기! 코드 import Foundation func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] { var ans: Array = [] for i in commands { var temp: Array = [] for j in i[0]...i[1] { temp.append(array[j-1]) } temp.sort() ans.append(temp[i[2]-1]) } return ans }
[프로그래머스] 12915. 문자열 내 마음대로 정렬하기 (swift) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1� programmers.co.kr 문제 설명 1. 문자열로 구성된 리스트와 정수가 주어졌을 때, 각 문자열의 n번째 글자를 기준으로 오름차순 정렬 2. n번째 글자가 같을 경우 사전순으로 앞선 문자열이 앞에 위치 풀이 1. 하라는 대로 구현하면 됩니다 .. 2. swift의 정렬 함수를 공부할 수 있는 문제 코드 func solution(_ strings:[String], _ n:Int) -> [String] { var ans: [..
[프로그래머스] 12912. 두 정수 사이의 합 (swift) 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우 programmers.co.kr 풀이 1. 두 수 중 작은 수를 매번 +1 하며 큰 수와 같아질 때까지 반복문을 돌리는 방법도 있지만, 숫자의 차가 클 경우 비효율적이다. 2. 반복문을 사용하지 않고 바로 계산하는 것이 효율적임. func solution(_ a:Int, _ b:Int) -> Int64 { var aa: Int64 = Int64(a) var bb: Int64 = Int64(b) if(aa > bb) { swa..
[프로그래머스] 12903. 가운데 글자 가져오기 (swift) 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 문제 설명 1. 문자열 s의 가운데 글자를 반환하는 함수 구현하기. 2. 단어의 길이가 짝수라면 가운데 두 글자를 반환. 풀이 1. 홀수일 때와 짝수일 때의 경우를 나누어 return import Foundation func solution(_ s: String) -> String { let len: Int = s.count let index = s.index(s.startIndex, offsetBy: len/2) if l..
MySQL 정리 보호되어 있는 글입니다.
[프로그래머스] 12979. 기지국 설치 (C++) 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 문제 설명 1. 5g가 도달하지 않는 곳에 기지국 설치 2. 최소로 설치할 수 있는 기지국의 개수 출력 풀이 1. N answer에 더해주기 코드 #include #include using namespace std; int solution(int n, vector stations, int w) { int answer = 0; int cnt = 0; int idx = 1; for(int i=0; i 0) { if(width % (w * 2 + ..
[백준] 1922. 네트워크 연결 (C++) 1922번: 네트워크 연결 이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다. www.acmicpc.net 문제 설명 1. 모든 컴퓨터를 연결하는 데 드는 최소 비용 출력 풀이 크루스칼 알고리즘 : '모든' 컴퓨터를 연결하는데 드는 '최소' 비용 코드 #include #include #include using namespace std; int n, m; class Edge { public: int node[2]; int dis; Edge(int a, int b, int c) { this->node[0] = a; this->node[1] = b; this->dis = c; } bool operatordis < edge.dis; } }; class UNION_..
[프로그래머스] 12978. 배달 (C++) 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 문제 설명 1. 각 마을은 양방향으로 연결됨 2. 마을 N까지의 거리가 K 이하면, 배달 가능 3. 마을 1에서 배달을 갈 수 있는 마을의 개수 출력 풀이 플로이드 와샬 알고리즘 1. 각 마을간의 거리를 입력받을 때마다 배열에 저장 (양방향으로!!) 1-1. 마을 a와 b 사이의 경로가 2개 이상일 수 있으니, 입력받을 때마다 최솟값으로 갱신 2. 마을 기준으로 반복문 돌면서 최소 거리 갱신 3. 마을 a -> a 비용은 0 4. 마을 ..