🖥 문제 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 🤔 풀이 방법 arr[0]과 arr[1]의 최대공약수를 유클리드 호제법을 이용하여 구한다. 1번에서 구한 최대공약수를 이용하여 최소공배수를 구한다. 2번에서 구한 최소공배수를 이용하여 arr[2]와의 최대공약수를 유클리드 호제법을 이용하여 구한다. 3번에서 구한 최대공약수를 이용하여 최소공배수..
🖥 문제 압축할 문자열 s가 매개변수로 주어질 때, 위에 설명한 방법으로 1개 이상 단위로 문자열을 잘라 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 return 하도록 solution 함수를 완성해주세요. 🤔 풀이 방법 변수 s: [String] : 압축할 문자열 compressedS: [String] : 압축된 문자열 중 가장 짧은 문자열 start: Int : 비교의 기준이 되는 문자열의 시작 인덱스 current: Int : 비교중인 인덱스 num: Int : 압축이 가능한 개수 tmp: [string] : 압축된 문자열 for i in 1...s.count/2 + 1 {} 1개 ~ s.count/2개의 문자열 단위로 압축하기 위하여 반복한다. while current+i-1 < s.coun..
🖥 문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-..
🖥 문제 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 🤔 풀이 방법 유클리드 호제법으로 최대공약수 구하기 유클리드 호제법은 2개의 자연수의 최대공약수를 구하는 알고리즘이다. 2개의 자연수 n, m에 대해서 n를 m로 나눈 나머지를 r이라 하면, n과 m의 최대공약수는 m과 r의 최대공약수와 같다. 이를 이용하여 m을 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 n..
🖥 문제 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 🤔 풀이 방법 에라토스테네스의 체 에라토스테네스의 체는 고대 그리스 수학자 에라토스테네스가 발견한 소수를 찾는 방법이다. 1부터 숫자 n 사이에 소수를 구하고자 할 때, 0부터 n까지의 배열을 만들고 이를 모두 1로 초기화한다. 0과 1은 소수가 아니므로 0으로 바꾸어준다. 2는 소수이므로, 2를 제외한 2의 배수를 모두 0으로 바꾸어준다. 3은 소수이므로, 3을 제외한 3의 배수를 모두 0으로 바꾸어준다. 5는 소수이므로, 5를 제외한 5의 배수를 모두 0으로 바꾸어준다. 7은 소수이므로, 7을 제외한 7의 배수를 모두 0으로 바꾸어준다. n의 제곱근까지 위의 과정을 반복하면 모든 소수만 1로..
📚 prefix & suffix let numbers = [10, 20, 30, 40, 50, 60] if let i = numbers.firstIndex(of: 40) { print(numbers.prefix(2)) // [10, 20] print(numbers.suffix(from: i)) // [40, 50, 60] }📚 문자열의 n번째 글자 추출하기 String 그대로 접근하여 추출하기 let str = "Hello" let n = 1 str[str.index(str.startIndex, offsetBy: n) // 'e' 더 쉬운 방법 : Array let str = "Hello" let n = 1 "\(Array(str)[n])" // "e" 📚 substring let str ..
🖥 문제 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현할 수 있는 방법 중 N 사용 횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 🤔 풀이 방법 이 문제는 동적계획법(Dynamic Programming)으로 분류되어 있지만, 깊이 우선 탐색(Depth-First Search)으로 풀었다. 깊이 우선 탐색이란 루트노드에서 부터 시작해서 다음 브랜치로 넘어가기 전에 해당 브랜치를 완벽하게 탐..
🖥 문제 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를 들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 🤔 풀이 방법 for문으로 구현 String(n) Int 형식으로 되어있는 n을 String으로 바꾸어준다. answer += Int(String(strN))! strN을 한글자씩 Int 형식으로 바꾸어주며 더해준다. map으로 구현 String(n) Int 형식으로 되어있는 n을 String으로 바꾸어준다. .map{Int(String($0))!} : map을 이용하여 n을 [Int] 형식으로 바꾸어준다. $0 : [String.Element] String($0) : String Int(String($0..
- Total
- Today
- Yesterday
- 에로토스테네스의 체
- 다리를 지나는 트럭
- compactMap
- java
- map
- iTunes Search API
- UISearchController
- DFS
- sql
- Algorithm
- abs()
- 최소공배수
- mysql
- ternary
- Firebase
- 최대공약수
- 깊이 우선 탐색
- 프로그래머스
- IOS
- Kakao
- TIL
- BOJ
- Git
- calendar
- 유클리드 호제법
- 별졈
- SWIFT
- programmers
- 달력
- Baekjoon
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |