프로그래머스 입문문제

[프로그래머스 입문문제] Day 17 문자열, 수학, 조건문, 배열, 사칙연산

Devleoper_yh 2025. 2. 6. 23:58
반응형

1. 숫자 찾기

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

입출력 예

num k result
29183 1 3
232443 4 4
123456 7 -1

입출력 예 설명

입출력 예 #1

  • 29183에서 1은 3번째에 있습니다.

입출력 예 #2

  • 232443에서 4는 4번째에 처음 등장합니다.

입출력 예 #3

  • 123456에 7은 없으므로 -1을 return 합니다.

제출 답안

import Foundation

func solution(_ num: Int, _ k: Int) -> Int {
    // num을 문자열로 변환하여 numString에 저장
    let numString = String(num)
    
    // k를 문자열로 변환하여 kString에 저장
    let kString = String(k)

    // numString에서 kString이 처음 등장하는 위치를 찾기
    if let index = numString.firstIndex(of: Character(kString)) {
        // 위치를 1-based 인덱스로 반환
        return numString.distance(from: numString.startIndex, to: index) + 1
    }
    
    // k가 num에 없으면 -1 반환
    return -1
}

2. n의 배수 고르기

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

입출력 예

n numlist result
3 [4, 5, 6, 7, 8, 9, 10, 11, 12] [6, 9, 12]
5 [1, 9, 3, 10, 13, 5] [10, 5,]
12 [2, 100, 120, 600, 12, 12] [120, 600, 12, 12]

입출력 예 설명

입출력 예 #1

  • numlist에서 3의 배수만을 남긴 [6, 9, 12]를 return합니다.

입출력 예 #2

  • numlist에서 5의 배수만을 남긴 [10, 5]를 return합니다.

입출력 예 #3

  • numlist에서 12의 배수만을 남긴 [120, 600, 12, 12]를 return합니다.

제출 답안

import Foundation

func solution(_ n:Int, _ numlist:[Int]) -> [Int] {
    return numlist.filter { $0 % n == 0 }
}

 


3. 자릿수 더하기

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요


제한사항

  • 0 ≤ n ≤ 1,000,000

입출력 예

n result
1234 10
930211 16

입출력 예 설명

입출력 예 #1

  • 1 + 2 + 3 + 4 = 10을 return합니다.

입출력 예 #2

  • 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

제출 답안

 

import Foundation

func solution(_ n: Int) -> Int {
    return String(n).compactMap { $0.wholeNumberValue }.reduce(0, +)
}

https://developer.apple.com/documentation/swift/character/wholenumbervalue

 

wholeNumberValue | Apple Developer Documentation

The numeric value this character represents, if it represents a whole number.

developer.apple.com

wholeNumberValue는 문자(Character) 타입에서 사용되는 Swift의 속성으로, 해당 문자가 숫자로 변환될 수 있을 경우 정수(Int) 값을 반환합니다. 변환할 수 없는 경우 nil을 반환

4. OX퀴즈

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
  • 1 ≤ quiz의 길이 ≤ 10
  • X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
  • X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
  • -10,000 ≤ X, Y ≤ 10,000
  • -20,000 ≤ Z ≤ 20,000
  • [연산자]는 + 와 - 중 하나입니다.

입출력 예

quiz result
["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"]
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"]

 


입출력 예 설명

입출력 예 #1

  • 3 - 4 = -3 은 틀린 수식이므로 "X", 5 + 6 = 11 은 옳은 수식이므로 "O" 입니다. 따라서 ["X", "O"]를 return합니다.

입출력 예 #2

  • 19 - 6 = 13 은 옳은 수식이므로 "O", 5 + 66 = 71 은 옳은 수식이므로 "O", 5 - 15 = 63 은 틀린 수식이므로 "X", 3 - 1 = 2는 옳은 수식이므로 "O" 따라서 ["O", "O", "X", "O"]를 return합니다.

제출 답안

import Foundation

func solution(_ quiz: [String]) -> [String] {
    return quiz.map { expression in
        // 수식을 공백(" ")을 기준으로 나누어 배열로 변환
        let parts = expression.split(separator: " ").map { String($0) }
        
        // 배열의 요소 개수가 정확히 5개여야 하며, 숫자 변환이 가능해야 함
        guard parts.count == 5,
              let x = Int(parts[0]),   // 첫 번째 숫자 (X)
              let y = Int(parts[2]),   // 두 번째 숫자 (Y)
              let z = Int(parts[4]) else {  // 결과값 (Z)
            return "X" // 형식이 잘못되었거나 변환이 실패하면 "X" 반환
        }
        
        // 연산자에 따라 덧셈 또는 뺄셈 수행
        let result = (parts[1] == "+") ? (x + y) : (x - y)
        
        // 계산 결과와 주어진 결과(Z)가 일치하면 "O", 아니면 "X" 반환
        return result == z ? "O" : "X"
    }
}

Day 17

반응형