🖥 문제 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 🤔 풀이 방법 numbers가 [6, 10, 2] 일 때 순서를 재배치하여 "6102", "6210", "2106" 등의 숫자를 만들 수 있다. 이때 만들어진 숫자 중 가장 큰 숫자를 리턴하면 된다. numbers가 [6, 0, 2]일 땐 "6..
🖥 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 🤔 풀이 방법 변수 floor: Int : 배정된 층 room: String : 배정된 번호를 스트링 형식으로 변환한 값. 1호의 경우 01호로 표시하기 위함 tmpRoom: Int : 배정된 번호 floor = N % H N을 H로 나눈 나머지가 배정된 층이 된다. 5층 건물에 7번째 사람 -> 2층 tmpRoom = N / H N을 H로 나눈 몫이 배정된 번..
🖥 문제 '(' 와 ')' 로만 이루어진 문자열 w가 "균형잡힌 괄호 문자열" 이라면 다음과 같은 과정을 통해 "올바른 괄호 문자열"로 변환할 수 있습니다. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수..
🖥 문제 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. solution 함수의 매개변수로 다리 길이 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭 별 무게 truck_weights가 주어집니다. 이때 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 return 하도록 solution 함수를 완성하세요. 🤔 풀이 방법 변수 truck: Int : 대기 트럭이 담긴 큐 bridge: [Int] : 다리 길이의 배열 arrived: [Int] : 다리를 지난 트럭 we..
🖥 문제 문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2)가 적용되는 수입니다. 예를 들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 n은 1 이상, 100000 이하인 자연수입니다. 🤔 풀이 방법 var fibo: [Int] = Array(repeating: 0, count: n + ..
🖥 문제 두 수의 최소공배수(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..
🖥 문제 문자열로 구성된 리스트 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..
- Total
- Today
- Yesterday
- 별졈
- DFS
- IOS
- 프로그래머스
- iTunes Search API
- 유클리드 호제법
- Kakao
- TIL
- map
- 깊이 우선 탐색
- ternary
- abs()
- 에로토스테네스의 체
- Algorithm
- SWIFT
- 최소공배수
- mysql
- compactMap
- UISearchController
- Firebase
- Baekjoon
- 다리를 지나는 트럭
- calendar
- 최대공약수
- programmers
- BOJ
- java
- sql
- Git
- 달력
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |