Where who wants to meet someone
커피 심부름 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181837
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ order:[String]) -> Int {
return order.map { ["iceamericano", "americanoice", "hotamericano", "americanohot", "americano", "anything"].contains($0) ? 4500 : 5000 }.reduce(0, +)
}
- 가격이 다른 두 그룹으로 묶을 수 있기에 groupA, groupB, totalAmount 프로퍼티를 만들고, order를 forEach로 돌면서 group에 속하는 것을 분기로 totalAmount 값을 증가시킨 뒤 반환하는 것이 초안이었다.
- 이후 groupB 없이 A.contain() 만으로 분기하도록 축약하였고, 최종적으로 order에서 특정 그룹에 포함 여부를 기준으로 가격으로 변환한 후 reduce로 총액을 더하는 방식으로 변환했다.
// 풀이 1
func solution(_ order: [String]) -> Int { order.map { $0.contains("cafelatte") ? 5000 : 4500 }.reduce(0, +) }
// 풀이 2
import Foundation
func solution(_ order:[String]) -> Int {
return order.map {
if $0.contains("cafelatte") { return 5000 }
else { return 4500 }
}.reduce(0, +)
}
- 풀이 1처럼 카페라떼를 기준으로 잡고, cafelatte 문자열 포함 여부로 결과를 내는 방법, 풀이 2처럼 map 내에서 if문을 쓰는 방법이 있었다.
점수: +1
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
무작위로 K개의 수 뽑기 (0) | 2024.02.18 |
---|---|
두 수의 합 (0) | 2024.02.18 |
문자열이 몇 번 등장하는지 세기 (0) | 2024.02.16 |
문자열 묶기 (0) | 2024.02.14 |
특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.02.14 |