A로 B 만들기
문제 설명
문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해 보세요.
제한 사항
- 0 < before의 길이 == after의 길이 < 1,000
- before와 after는 모두 소문자로 이루어져 있습니다.
입출력 예
before | after | result |
"olleh" | "hello" | 1 |
"allpe" | "apple" | 0 |
입출력 예 설명
입출력 예 #1
- "olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.
입출력 예 #2
- "allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.
제출
import Foundation
func solution(_ before:String, _ after:String) -> Int {
var before = before.map{String($0)}, after = after.map{String($0)}
for b in before{
if after.isEmpty || !after.contains(b) {return 0}
else{
after.remove(at: after.firstIndex(of: b)!)
}
}
return 1
}
입력받은 두 문자열을 모두 String형 배열로 변환한다.
after 문자열이 비어 있거나 before의 문자가 after에 없다면 0을 반환한다.
아니라면 after 배열에서 before의 문자를 삭제한다.
다른 풀이
import Foundation
func solution(_ before:String, _ after:String) -> Int {
return before.sorted(by: <) == after.sorted(by: <) ? 1 : 0
}
두 문자열을 정렬해 정렬한 문자열에 같다면 1을, 다르다면 0을 반환한다.
반응형
'📖 Coding Test > Programmers LV.0' 카테고리의 다른 글
[프로그래머스 LV.0] 중복된 문자 제거 (0) | 2023.01.07 |
---|---|
[프로그래머스 LV.0] k의 개수 (0) | 2023.01.07 |
[프로그래머스 LV.0] 이진수 더하기 (0) | 2023.01.06 |
[프로그래머스 LV.0] 치킨 쿠폰 (0) | 2023.01.06 |
[프로그래머스 LV.0] 로그인 성공? (0) | 2023.01.05 |
댓글