시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 (추가 시간 없음) | 1024 MB | 400 | 96 | 83 | 28.136% |
ZOYI는 사이트 내 온라인 유저과 대화할 수 있는 채널이라는 툴을 개발하고 있다. 최근에는 채널을 이용하는 온라인 유저를 분류하기 위해 RF(Recency / Frequency) 모델을 도입하였고 다음과 같은 계산을 통해 유저들을 분류하기로 하였다.
사진: RF채널에 따른 유저의 분류. 가로축이 Recency, 세로축이 Frequency 축이다.
단, 0 < f1 < f2 < f3 < f4, 0 < r1 < r2 < r3 < r4이며, 모든 fi값과 ri값은 정수이다.
x축은 Recency, y축은 Frequency를 의미하며 각 온라인 유저는 접속 기록에 따라 r, f 값이 정해지게 되며, 다음 12가지 중 하나로 분류하게 된다.
New Customer
"Promising
"About to Sleep
"Hibernating
"Lost
"Potential Loyalist
"Need Attention
"About to Leave
"Champion
"Loyal Customer
"Can't Lose Them
"None
"이 중 "None
"은 유저의 접속 기록이 없을 때를 뜻한다. 그림에서 (r, f) 이 두 가지 이상의 분류 경계에 위치할 경우 (r - 0.5, f - 0.5)의 분류를 참고한다. 예를 들어 (r, f)의 값이 (r4, f2)인 경우는 "Hibernating
" 으로 분류되고 (r3, f4)의 경우 "Loyal Customer
"로 분류되는 식이다.
당신은 RUN 에 관심있는 사이트 이용자 현황을 알고 싶어 RUN 지원 사이트에 채널을 설치하고 분석해보려고 한다. 이 사이트에서 접속 유저의 r, f 는 다음과 같은 방식으로 하기로 결정했다.
사이트 이용자들의 접속 이벤트가 주어질 때 고객을 위의 그림 기준으로 분류하는 프로그램을 작성하시오.
첫 줄에는 r1, r2, r3, r4 를 나타내는 자연수 4개가 공백으로 구분되어 순서대로 주어진다.
두 번째 줄에는 f1, f2, f3, f4를 나타내는 자연수 4개가 공백으로 구분되어 순서대로 주어진다.
세 번째 줄에는 접속 이벤트의 수 N이 주어진다.
다음 N개의 줄에는 일어난 이벤트의 정보가 순서대로 주어지며, N개의 줄 중 i번째 줄에 나타난 이벤트는 i시간 에 일어난 이벤트를 뜻한다.
각 이벤트는 A와 B 사이가 공백으로 구분 된 형태로 주어지며, B는 유저 이름을 나타내고 공백이 없는 길이 10 이하 알파벳 대소문자로 이루어져 있다. A는 1, 2 중 하나의 값을 가지게 되는데 1일 경우 유저가 사이트에 접속했다는 뜻이며, 2일 경우 그 순간 유저가 무엇으로 분류되었는지 출력 해야 한다.
이벤트들 중 A가 2인 경우들에 대해 각 고객이 어떻게 분류 되었는지를 한 줄에 하나씩 출력한다. (따옴표는 제외하고 출력한다.)
이 서브태스크는 다음의 조건을 만족한다.:
이 서브태스크는 추가 제한 조건이 없다.
1 2 3 4 1 2 3 4 8 1 RUN 1 Alex 2 Alex 1 RUN 1 RUN 1 Alex 2 Alex 2 RUN
New Customer Potential Loyalist Need Attention
시간 3에 Alex
의 접속 상태는 f = 1 (1번 접속), r = 1 (시간 3 - 2 = 1)이다. 따라 "New Customer
" 로 분류된다.
시간 7에 Alex
의 접속 상태는 f = 2 (2번 접속), r = 1 (시간 7 - 6 = 1)이다. 따라 "Potential Loyalist
"로 분류된다.
시간 8의 RUN
의 접속 상태는 f = 3 (3번 접속), r = 3 (시간 8 - 5 = 3)이다. 따라 "Need Attention
" 으로 구분된다.
해당 예제는 서브태스크 1에는 주어지지 않음을 유의하자.