[프로그래머스 / C++] 커피 심부름

YH·2023년 12월 2일
0

문제

커피 심부름 : 문제 링크


문제 분석

  • 팀의 막내인 철수는 아메리카노와 카페라테만 판매하는 카페에서 팀원들의 커피를 사려고 한다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원이다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였다. 각 지원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return
  • order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같다.
order의 원소의미
"iceamericano","americanoice"차가운 아메리카노
"hotamericano","americanohot"따뜻한 아메리카노
"icecafelatte","cafelatteice"차가운 카페 라테
"hotcafelatte","cagelattehot"따뜻한 카페 라테
"americano"아메리카노
"cafelatte"카페 라테
"anything"아무거나

string 헤더의 find() 함수 사용법
str.find("찾는 문자")
=> 찾는 문자를 str 문자열 내에서 찾았다면 해당 문자열의 시작 위치를, 그렇지 않을 경우 npos를 return

  • 카페에서 결제하게 될 금액을 저장할 정수형 변수 answer을 0으로 초기화. for loop를 통해 문자열 배열 order의 첫번째부터 마지막 원소까지 순환하고, if문과 find() 함수를 사용하여, 문자열 내에 "americano" 또는 "anything"이 있을 경우 answer에 4500을 더함. 마찬가지로 else if문과 find() 함수를 사용하여, 문자열 내에 "cafelatte"가 있을 경우 answer에 5000을 더함. loop 탈출 후, 최종적으로 저장된 answer을 return

풀이

#include <string>
#include <vector>

using namespace std;

int solution(vector<string> order) {
    int answer = 0;
    
    for(int i = 0; i < order.size(); ++i) {
        if(order[i].find("americano") != string::npos || order[i].find("anything") != string::npos) answer += 4500;
        else if(order[i].find("cafelatte") != string::npos) answer += 5000;
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글