프로그래머스 입문문제

[프로그래머스 입문문제] Day 8 배열, 구현, 수학

Devleoper_yh 2025. 1. 21. 00:31
반응형

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

 

Array | Apple Developer Documentation

An ordered, random-access collection.

developer.apple.com


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(_:)

 

compactMap(_:) | Apple Developer Documentation

Returns an array containing the non- results of calling the given transformation with each element of this sequence.

developer.apple.com

joined()

https://developer.apple.com/documentation/swift/array/joined(separator:)-7uber

 

joined(separator:) | Apple Developer Documentation

Returns the concatenated elements of this sequence of sequences, inserting the given separator between each element.

developer.apple.com


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 8

반응형