🖥 문제 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 🤔 풀이 방법 strings[i] = "\(str[str.index(str.startIndex, offsetBy: n)])\(str)" 문자열의 인덱스 n번째 글자를 문자열 맨 앞에 붙인다. strings.sort() 첫번째 글자를 기준으로 오름차순 정렬을 한다. 맨 앞에 문자를 제외한 문자열을 answer에 append한다. let start = str.index(str.startIndex, of..
🖥 문제 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세요. 🤔 풀이 방법 var possible = Array(repeating: 1, count: n) n명의 학생이 모두 체육복을 하나씩 가져왔다고 가정하고 배열을 1로 초기화한다. 도난당한 학생의 체육복을 -1해 주고 여벌 체육복이 있는 학생들의 체육복을 +1 해준다. for i in lost { possible[i - 1] -= 1 } for i in reserve { possible[i - 1] += 1 } if i != 0 && pos..
🖥 문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 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로..
🖥 문제 아래와 같이 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..
- Total
- Today
- Yesterday
- BOJ
- mysql
- UISearchController
- Algorithm
- Baekjoon
- Firebase
- 최소공배수
- IOS
- java
- SWIFT
- 달력
- TIL
- 에로토스테네스의 체
- ternary
- iTunes Search API
- 별졈
- 깊이 우선 탐색
- 최대공약수
- Git
- Kakao
- programmers
- 다리를 지나는 트럭
- map
- 유클리드 호제법
- DFS
- calendar
- abs()
- 프로그래머스
- sql
- compactMap
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |