Where who wants to meet someone

커피 심부름 본문

728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181837

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

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