1. 영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
numbers | result |
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
입출력 예 설명
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
제출 답안
import Foundation
func solution(_ numbers: String) -> Int {
// 영어로 된 숫자 문자열을 실제 숫자로 변환하는 매핑 딕셔너리
let s1: [String: String] = [
"zero": "0", "one": "1", "two": "2", "three": "3",
"four": "4", "five": "5", "six": "6", "seven": "7",
"eight": "8", "nine": "9"
]
// 변환할 문자열을 변수로 저장
var result = numbers
// 딕셔너리의 키(영어 숫자)를 순회하면서 실제 숫자로 변환
for (word, digit) in s1 {
result = result.replacingOccurrences(of: word, with: digit)
}
// 변환된 문자열을 Int 타입으로 변환하여 반환 (변환 실패 시 0 반환)
return Int(result) ?? 0
}
https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurrences
2. 인덱스 바꾸기
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 < my_string의 길이 < 100
- 0 ≤ num1, num2 < my_string의 길이
- my_string은 소문자로 이루어져 있습니다.
- num1 ≠ num2
입출력 예
my_string | num1 | num2 | result |
"hello" | 1 | 2 | "hlelo" |
"I love you" | 3 | 6 | "I L veoyou" |
입출력 예 설명
입출력 예 #1
- "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.
입출력 예 #2
- "I love you"의 3번째 인덱스 "o"와 " "(공백)을 바꾸면 "I l veoyou"입니다.
제출 답안
import Foundation
func solution(_ my_string: String, _ num1: Int, _ num2: Int) -> String {
// 문자열을 문자 배열로 변환
var charArray = Array(my_string)
// 두 문자 스왑
charArray.swapAt(num1, num2)
// 배열을 문자열로 변환 후 반환
return String(charArray)
}
https://developer.apple.com/documentation/swift/array/swapat(_:_:)
3. 한 번만 등장한 문자
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한사항
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
입출력 예
s | result |
"abcabcadc" | "d" |
"abdc" | "abcd" |
"hello" | "eho" |
입출력 예 설명
입출력 예 #1
- "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.
입출력 예 #2
- "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.
입출력 예 #3
- "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.
제출 답안
import Foundation
func solution(_ s: String) -> String {
// 문자별 등장 횟수를 저장할 딕셔너리 생성
var s1: [Character: Int] = [:]
// 문자열을 순회하며 각 문자의 등장 횟수를 카운트
for char in s {
s1[char, default: 0] += 1
}
// 한 번만 등장하는 문자만 필터링
let uniqueChar = s1.filter { $0.value == 1 }.map { $0.key }
// 한 번만 등장하는 문자를 사전 순으로 정렬
let sortedUniqueChar = uniqueChar.sorted()
// 배열을 문자열로 변환하여 반환
return String(sortedUniqueChar)
}
Feat.ChatGPT...
4. 약수 구하기
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10,000
입출력 예
n | result |
24 | [1, 2, 3, 4, 6, 8, 12, 24] |
29 | [1, 29] |
입출력 예 설명
입출력 예 #1
- 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.
입출력 예 #2
- 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.
제출 답안
import Foundation
func solution(_ n: Int) -> [Int] {
// 1부터 n까지 순회하며 약수를 찾음
var divisors: [Int] = []
for i in 1...n {
if n % i == 0 { // 나누어 떨어지면 약수
divisors.append(i)
}
}
return divisors
}
'프로그래머스 입문문제' 카테고리의 다른 글
[프로그래머스 입문문제] Day 14 조건문, 반복문, 시뮬레이션, 문자열 (0) | 2025.02.03 |
---|---|
[프로그래머스 입문문제] Day 13 문자열, 배열, 사칙연산, 수학, 조건문 (0) | 2025.01.31 |
[프로그래머스 입문문제] Day 12 문자열, 정렬, 사칙연산, 수학 (0) | 2025.01.24 |
[프로그래머스 입문문제] Day 11 수학, 반복문 (0) | 2025.01.23 |
[프로그래머스 입문문제] Day 10 조건문, 배열, 수학, 시뮬레이션 (0) | 2025.01.22 |