문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.제한 조건s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
입출력 예
s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1"" "-1 -1""
고차함수를 사용한다면 코드 2줄로 제출할 수 있다. 무조건 고차함수를 쓰는 것에 포커스를 맞추기 보다 스스로 풀 수 있는 방법을 생각해보고 풀어보는 것을 권장한다. 해결 후 다양한 해결법을 보게 된다면 다양한 풀이법이 더 이해가 잘 되기 때문이다.
1. compactMap()을 사용하고 sorted() 를 통해서 Int로 타입캐스팅 후 소팅된 문자열을 할당받은 map 변수의 fist,last 를 리턴
func solution(_ s:String) -> String {
let map = s.components(separatedBy: " ").compactMap{$0}.sorted { new, old in
let convertedNew = Int(new) ?? 0
let convertedOld = Int(old) ?? 0
return convertedNew < convertedOld
}
guard let first = map.first, let last = map.last else {
return ""
}
return "\(first) \(last)"
}
2. 위의 답변에서 조금 더 간결하게 변경해보자.
func solution(_ s:String) -> String {
let map = s.components(separatedBy: " ").compactMap{ Int($0)}.sorted()
return "\(map.min()!) \(map.max()!)"
}
3.compactMap() 대신에 map() 사용할 수도 있다.
func solution(_ s:String) -> String {
let map = s.components(separatedBy: " ").map{ Int($0)! }.sorted()
return "\(map.min()!) \(map.max()!)"
}
[코딩테스트] 프로그래머스 -LV2 영어 끝말잇기 (0) | 2023.11.01 |
---|---|
[알고리즘풀기] 백준 10815번 숫자카드 (0) | 2022.07.26 |
[알고리즘풀기] 백준 11720번 숫자의 합 구하기 (0) | 2022.07.19 |
댓글 영역