본문 바로가기
📖 Coding Test/Programmers LV.0

[프로그래머스 LV.0] A로 B 만들기

by hyebin (Helia) 2023. 1. 7.

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을 반환한다.
반응형

댓글