알고리즘 공부/프로그래머스
-
[Swift] 알고리즘 공부 - 부족한 금액 계산하기알고리즘 공부/프로그래머스 2023. 3. 30. 15:59
문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 pirce원 인데, 놀이기구를 N번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한 사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수 놀이기구의 이용 횟수 c..
-
[Swift] 알고리즘 공부 - 문자열 다루기 기본알고리즘 공부/프로그래머스 2023. 3. 30. 14:38
문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. 입출력 예 s return "a234" false "1234" true 설명 1. 먼저 글자수가 4,6인지 확인. 아닐시 false 리턴 2. s를 대문자 소문자로 바꿧을때 기본 s와 같으면 true 아니면 false 리턴 func solution(_ s:String) -> Bool { if s.count == 4 || s.count == 6 { return..
-
[Swift] 알고리즘 공부 - 약수의 개수와 덧셈알고리즘 공부/프로그래머스 2023. 3. 30. 01:46
문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 1 ≤ left ≤ right ≤ 1,000 입출력 예 left right result 13 17 43 24 27 52 설명 1. left부터 right까지 수 중에서 약수를 찾아야하기 때문에 (left...right).map{}으로 시작 2. left부터 right 각 수(n)마다 1부터 n까지 수중 약수의 개수를 찾아야 하기 때문에 filter함수로 약수를 찾고 count를 해준다. 3. count값이 짝수이면 n 홀수이면 -n을 반환 4. reduc..
-
[Swift] 알고리즘 공부 - 문자열 내림차순으로 배치하기알고리즘 공부/프로그래머스 2023. 3. 30. 01:14
문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 s return "Zbcdefg" "gfedcbZ" 설명 1. sorted(by: > )함수를 사용해서 정렬(내림차순이므로 >) func solution(_ s:String) -> String { return String(s.sorted(by: >)) } 문제 설명에서 대문자는 소문자보다 작은것으로 간주한다고 나와있어서 s에서 소문자 대문자를 나눠서 정렬해줘야 하나? 하고 생각했는데 기본적으로 정렬하면 대문자가 소문자 보다 앞으로..
-
[Swift] 알고리즘 공부 - 내적알고리즘 공부/프로그래머스 2023. 3. 30. 00:58
문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 제한사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 입출력 예 a b result [1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1] -2 설명 1. zip으로 a와 b를 묶는다 2. map 함수로 $0과 $1를 곱해준다 3. reduce로 전부 더해준다 import Foundation func solution(_ a:[Int..
-
[Swift] 알고리즘 공부 - 수박수박수박수박수박수?알고리즘 공부/프로그래머스 2023. 3. 30. 00:49
문제 설명 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 조건 n은 길이 10,000이하인 자연수입니다. 입출력 예 n return 3 "수박수" 4 "수박수박" 설명 1. 0부터 n까지 맵으로 배열만들기 2. 각 자리가 홀수인지 짝수인지 확인해서 짝수면 수 홀수면 박을 리턴 3. 완성된 배열을 reduce로 합치기 func solution(_ n:Int) -> String { return (0..
-
[Swift] 알고리즘 공부 - 가운데 글자 가져오기알고리즘 공부/프로그래머스 2023. 3. 30. 00:38
문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 제한 사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s return "abcde" "c" "qwer" "we" 설명 1. s의 가운데를 뽑기 위해 s를 array로 변환 2. s가 짝수인지 홀수 인지 판별 3. 홀수면 array로 변환한 s의 가운데 글자를 String으로 변환하여 리턴 4. 짝수면 가운데 2글자 string으로 변환후 합쳐서 리턴 func solution(_ s:String) -> String { if s.count == 1 { return s } return s.count % 2 == 1 ? String(Array(s)[s...
-
[Swift] 알고리즘 공부 - 제일 작은 수 제거하기알고리즘 공부/프로그래머스 2023. 3. 28. 15:27
문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 입출력 예 arr return [4,3,2,1] [4,3,2] [10] [-1] 설명 1. 가장 작은수를 빼줘야 하므로 min()함수로 어떤수가 작은지 찾는다 2. 찾은 수를 remove함수를 사용해 삭제 3. arr배열의 길이가 1이면 [-1]리턴, 아니면 a배열 리턴 func s..