🖥 문제 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, 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)으로 풀었다. 깊이 우선 탐색이란 루트노드에서 부터 시작해서 다음 브랜치로 넘어가기 전에 해당 브랜치를 완벽하게 탐..
🖥 문제 직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다. 🤔 풀이 방법 [[1, 4], [3, 4], [3, 10], [1, 10]] -> 1, y : 2개, 3, y : 2개... 4개의 좌표로 직사각형을 만들면 각 점을 이루는 좌표는 2개씩 중복된다. 이를 이용하면 문제를 간단하게 풀 수 있다. if로 구현 if v[0][0] == v[1][0] { ans[0] ..
🖥 문제 자연수 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..
🖥 문제 게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요. 🤔 풀이 방법 변수 copiedBoard : board의 내용을 복사해온다. basket : 인형을 담을 바구니 doll : 집어 올린 인형 result : 터트려져 사라진 인형의 개수 2중 for문 크레인을 작동시킨 위치를 하나씩 탐색한다. 동시에 화면의 격자 상태가 상태가 담긴 2차원 배열 board를 탐색한다. for move in moves { for i in 0.. Int { var copiedBoard = board var ba..
👩🏻💻 기술적 문제 📌 알고 있어야 할 것들 자료구조 알고리즘 개념 연결리스트(Linked Lists) 너비 우선 탐색(Breadth-First Search) 비트 조작(Bit Manipulation) 트리, 트라이(Tries), 그래프 깊이 우선 탐색(Depth-First-Search) 메모리(스택 vs 힙) 스택 & 큐 이진 탐색 재귀 힙(Heaps) 병합 정렬(Merge Sort) 동적 프로그래밍 (Dynamic Programming) Vector / ArrayList 퀵 정렬 big-O 시간 & 공간 해시테이블 사용법, 구현법, 애플리케이션, 그리고 가능하다면 공간과 시간 복잡도에 대해서 알아두기 바란다. 특히, 해시 테이블은 매우 중요한 주제다.
- Total
- Today
- Yesterday
- TIL
- 최소공배수
- SWIFT
- programmers
- Algorithm
- 다리를 지나는 트럭
- map
- sql
- mysql
- iTunes Search API
- IOS
- 달력
- DFS
- Kakao
- compactMap
- 유클리드 호제법
- ternary
- Git
- 별졈
- Firebase
- UISearchController
- 프로그래머스
- calendar
- java
- Baekjoon
- abs()
- BOJ
- 에로토스테네스의 체
- 깊이 우선 탐색
- 최대공약수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |