문제
다형성은 서로 다른 객체에서 같은 메서드를 호출해도 각 객체에 맞는 동작을 하게 합니다. 여기서는 각 채널이 자기 방식으로 메시지 비용을 계산합니다.
각 메시지는 <channel> <text> 형식이며, text는 첫 번째 공백 뒤의 모든 내용입니다:
email: 1이 듭니다.sms: 텍스트 160자 블록이 시작될 때마다 5가 듭니다(1~160자는 블록 하나).push: 무료입니다.
구현하세요: notification_cost(messages).
입력
messages: 보낼 메시지들. SMS 텍스트는 최소 한 글자입니다.
출력
총비용을 반환합니다.
제약 조건
0 ≤ 메시지 수 ≤ 10,000
텍스트는 1~2,000자
예시
예시 1
입력:
messages = ["email Welcome!", "sms Your code is 1234", "push New follower"]
예상 출력:
expected = 6
입력:
std::vector<std::string> messages = {"email Welcome!", "sms Your code is 1234", "push New follower"};
예상 출력:
long long expected = 6;
입력:
string[] messages = new string[] {"email Welcome!", "sms Your code is 1234", "push New follower"};
예상 출력:
long expected = 6;
설명
이메일 1, 짧은 SMS는 블록 하나(5), 푸시는 무료: 6.
예시 2
입력:
messages = ["sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
예상 출력:
expected = 10
입력:
std::vector<std::string> messages = {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};
예상 출력:
long long expected = 10;
입력:
string[] messages = new string[] {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};
예상 출력:
long expected = 10;
설명
161자는 160자 블록 두 개가 필요합니다: 2 × 5 = 10.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
메시지마다 첫 공백에서 한 번만 나눠 채널과 본문을 얻으세요.
힌트 2
SMS는 올림 나눗셈으로 블록 수를 세세요: (length + 159) / 160.
힌트 3
푸시는 무료이므로 0을 더합니다.
예상 복잡도
시간 O(전체 길이), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.