쉬움 0명 해결 정답률 0%

알림 비용

이메일, SMS, 푸시 채널이 각자의 방식으로 비용을 계산해 메시지를 보냅니다.

배우게 될 내용

  • 채널마다 자기 요금 규칙 두기
  • 글자 수를 블록 단위로 올림하기
  • 메시지를 채널과 본문으로 나누기

문제

원문 보기 (영어)

다형성은 서로 다른 객체에서 같은 메서드를 호출해도 각 객체에 맞는 동작을 하게 합니다. 여기서는 각 채널이 자기 방식으로 메시지 비용을 계산합니다.

각 메시지는 <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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.