🖥 문제 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로 나눈 몫이 배정된 번..
🖥 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때..
🖥 문제 '(' 와 ')' 로만 이루어진 문자열 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..
- Total
- Today
- Yesterday
- TIL
- Algorithm
- Firebase
- Git
- ternary
- UISearchController
- 에로토스테네스의 체
- 최대공약수
- BOJ
- iTunes Search API
- 최소공배수
- 유클리드 호제법
- map
- DFS
- IOS
- 다리를 지나는 트럭
- Baekjoon
- compactMap
- SWIFT
- abs()
- Kakao
- 깊이 우선 탐색
- mysql
- 프로그래머스
- java
- 달력
- sql
- 별졈
- calendar
- programmers
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |