1. x 사이의 개수
문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ myString의 길이 ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
myString | result |
"oxooxoxxox" | [1, 2, 1, 0, 1, 0] |
"xabcxdefxghi" | [0, 3, 3, 3] |
입출력 예 설명
입출력 예 #1
- "x"를 기준으로 문자열을 나누면 ["o", "oo", "o", "", "o", ""]가 됩니다. 각각의 길이로 배열을 만들면 [1, 2, 1, 0, 1, 0]입니다. 따라서 [1, 2, 1, 0, 1, 0]을 return 합니다.
입출력 예 #2
- "x"를 기준으로 문자열을 나누면 ["", "abc", "def", "ghi"]가 됩니다. 각각의 길이로 배열을 만들면 [0, 3, 3, 3]입니다. 따라서 [0, 3, 3, 3]을 return 합니다.
제출 답안
import Foundation
func solution(_ myString: String) -> [Int] {
// x를 기준으로 문자열을 나누어 배열로 변환
let splitArray = myString.components(separatedBy: "x")
// 나눠진 문자열 각각의 길이를 구한 후 배열로 변환하여 반환
return splitArray.map { $0.count }
}
2. 문자열 잘라서 정렬하기
문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.
제한사항
- 1 ≤ myString ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
myString | result |
"axbxcxdx" | ["a", "b", "c", "d"] |
"dxccxbbbxaaaa" | ["aaaa, "bbb", "cc", "d"] |
입출력 예 설명
입출력 예 #1
- myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 따라서 해당 배열을 return 합니다.
입출력 예 #2
- myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.
제출 답안
import Foundation
func solution(_ myString:String) -> [String] {
// 기준으로 문자열을 나눔, Substring을 String으로 변환 후 정렬
return myString.split(separator: "x").map { String($0) }.sorted()
}
3. 간단한 식 계산하기
문자열 binomial이 매개변수로 주어집니다. binomial은 "aop b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.
제한사항
- 0 ≤ a, b ≤ 40,000
- 0을 제외하고 a, b는 0으로 시작하지 않습니다.
입출력 예
binomial | result |
"43 + 12" | 55 |
"0 -7777" | -7777 |
"40000 * 40000" | 1600000000 |
입출력 예 설명
입출력 예 #1
- 예제 1번의 binomial은 "43 + 12"로 이 식을 계산한 결과인 43 + 12 = 55를 return 합니다.
입출력 예 #2
- 예제 2번의 binomial은 "0 - 7777"로 이 식을 계산한 결과인 0 - 7777 = -7777을 return 합니다.
입출력 예 #3
- 예제 3번의 binomial은 "40000 * 40000"으로 이 식을 계산한 결과인 40000 × 40000 = 1600000000을 return 합니다.
제출 답안
import Foundation
func solution(_ binomial: String) -> Int {
// 문자열을 공백(" ")을 기준으로 나누어 배열로 변환
let components = binomial.split(separator: " ")
// 각 요소를 가져오기
guard components.count == 3,
let a = Int(components[0]),
let b = Int(components[2]) else { return 0 }
let op = String(components[1]) // 연산자
// 연산자에 따라 계산 수행
switch op {
case "+":
return a + b
case "-":
return a - b
case "*":
return a * b
default:
return 0 // 예상되지 않은 연산자는 기본값 0 반환
}
}
4. 문자열 바꿔서 찾기
문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.
제한사항
- 1 ≤ myString의 길이 ≤ 100
- 1 ≤ pat의 길이 ≤ 10
- myString과 pat는 문자 "A"와 "B"로만 이루어진 문자열입니다.
입출력 예
myString | pat | result |
"ABBAA" | "AABB" | 1 |
"ABAB" | "ABAB" | 0 |
입출력 예 설명
입출력 예 #1
- "ABBAA"에서 "A"와 "B"를 서로 바꾸면 "BAABB"입니다. 여기에는 부분문자열 "AABB"가 있기 때문에 1을 return 합니다.
입출력 예 #2
- "ABAB"에서 "A"와 "B"를 서로 바꾸면 "BABA"입니다. 여기에는 부분문자열 "BABA"가 없기 때문에 0을 return 합니다.
제출 답안
import Foundation
func solution(_ myString: String, _ pat: String) -> Int {
// A를 B로, B를 A로 변환
let transformedString = myString.map { $0 == "A" ? "B" : "A" }.joined()
// 변환된 문자열에 pat이 포함되는지 확인
return transformedString.contains(pat) ? 1 : 0
}
5. rny_string
'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ rny_string의 길이 ≤ 100
- rny_string은 영소문자로만 이루어져 있습니다.
입출력 예
my_string | result |
"masterpiece" | "rnasterpiece" |
"programmers" | "'prograrnrners" |
"jerry" | "jerry" |
"burn" | "burn" |
입출력 예 설명
입출력 예 #1
- 예제 1번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.
따라서 "rnasterpiece"를 return 합니다.
입출력 예 #2
- 예제 2번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.
따라서 "prograrnrners"를 return 합니다.
입출력 예 #3
- 예제 3번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "jerry"를 return 합니다.
입출력 예 #4
- 예제 4번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "burn"를 return 합니다.
제출 답안
import Foundation
func solution(_ rny_string: String) -> String {
// m을 rn으로 교체한다
return rny_string.replacingOccurrences(of: "m", with: "rn")
}
https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurrences
replacingOccurrences(of:with:) | Apple Developer Documentation
Returns a new string in which all occurrences of a target string in the receiver are replaced by another given string.
developer.apple.com
'프로그래머스 기초문제' 카테고리의 다른 글
[프로그래머스 기초문제] Day 20 함수(메서드) (0) | 2025.03.13 |
---|---|
[프로그래머스 기초문제] Day 19 문자열, 리스트(배열) (0) | 2025.03.13 |
[프로그래머스 기초문제] Day 17 문자열 (0) | 2025.03.10 |
[프로그래머스 기초문제] Day 16 문자열 (0) | 2025.03.07 |
[프로그래머스 기초문제] Day 15 리스트(배열), 문자열 (0) | 2025.03.06 |