1. 배열 자르기
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ numbers의 길이 ≤ 30
- 0 ≤ numbers의 원소 ≤ 1,000
- 0 ≤num1 < num2 < numbers의 길이
입출력 예
numbers | num1 | num2 | result |
[1, 2, 3, 4, 5] | 1 | 3 | [2, 3, 4] |
[1, 3, 5] | 1 | 2 | [3, 5] |
입출력 예 설명
입출력 예 #1
- [1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.
입출력 예 #2
- [1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.
제출 답안
import Foundation
func solution(_ numbers:[Int], _ num1:Int, _ num2:Int) -> [Int] {
// Array로 배열 슬라이스를 새 배열로 변환한다.
// numbers의 num1 부터 num2까지 범위를
return Array(numbers[num1...num2])
}
Array
https://developer.apple.com/documentation/swift/array
2. 외계행성의 나이
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
제한사항
- age는 자연수입니다.
- age ≤ 1,000
- PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.
입출력 예
age | result |
23 | "cd" |
51 | "fb" |
100 | "baa" |
입출력 예 설명
입출력 예 #1
- age가 23이므로 "cd"를 return합니다.
입출력 예 #2
- age가 51이므로 "fb"를 return합니다.
입출력 예 #3
- age가 100이므로 "baa"를 return합니다.
제출 답안
import Foundation
func solution(_ age: Int) -> String {
// 알파벳 변환을 위한 기준 문자열
let alphabet = "abcdefghijklmnopqrstuvwxyz"
// 숫자를 문자열로 변환 후 각 숫자를 대응하는 알파벳으로 변환
// 입력받은 숫자 age를 문자열로 변환
// .compactMap -> 문자열을 한 글자씩 순회하며 변환
let result = String(age).compactMap { char -> String? in
// char를 정수로변환
if let digit = Int(String(char)) {
let index = alphabet.index(alphabet.startIndex, offsetBy: digit)
return String(alphabet[index])
}
return nil
}
// 변환된 문자 배열을 연결하여 반환
return result.joined()
}
compactMap
https://developer.apple.com/documentation/swift/sequence/compactmap(_:)
joined()
https://developer.apple.com/documentation/swift/array/joined(separator:)-7uber
3. 진료순서 정하기
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 중복된 원소는 없습니다.
- 1 ≤ emergency의 길이 ≤ 10
- 1 ≤ emergency의 원소 ≤ 100
입출력 예
emergency | result |
[3, 76, 24] | [3, 1, 2] |
[1, 2, 3, 4, 5, 6, 7] | [7, 6, 5, 4, 3, 2, 1] |
[30, 10, 23, 6, 100] | [2, 4, 3, 5, 1] |
입출력 예 설명
입출력 예 #1
- emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.
입출력 예 #2
- emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.
입출력 예 #3
- emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.
제출 답안
import Foundation
func solution(_ emergency:[Int]) -> [Int] {
// emergency를 내림차순으로 정렬
let sort = emergency.sorted(by: >)
// 배열 순위를 반환
return emergency.map { sort.firstIndex(of: $0)! + 1 }
}
4. 순서쌍의 개수
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
입출력 예
n | result |
20 | 6 |
100 | 9 |
입출력 예 설명
입출력 예 #1
- n이 20 이므로 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return합니다.
입출력 예 #2
- n이 100 이므로 곱이 100인 순서쌍은 (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) 이므로 9를 return합니다.
제출 답안
import Foundation
func solution(_ n: Int) -> Int {
var count = 0
// 1부터 n까지 순회하며 순서쌍을 찾음
for i in 1...n {
if n % i == 0 {
count += 1
}
}
return count
}
'프로그래머스 입문문제' 카테고리의 다른 글
[프로그래머스 입문문제] Day 11 수학, 반복문 (0) | 2025.01.23 |
---|---|
[프로그래머스 입문문제] Day 10 조건문, 배열, 수학, 시뮬레이션 (0) | 2025.01.22 |
[프로그래머스 입문문제] Day 6 문자열, 반복문, 출력, 배열, 조건문 (0) | 2025.01.16 |
[프로그래머스 입문문제] Day 5 수학, 배열 (0) | 2025.01.15 |
[프로그래머스 입문문제] Day 3 사칙연산, 배열, 수학 (0) | 2025.01.13 |