[문제]
Al의 초콜릿 망고 회사는 방문자들이 2d 단지에 얼마나 많은 초콜릿 망고가 있는지 추측할 수 있는 웹 사이트를 갖고 있다. 방문자들은 1부터 99까지의 수를 추측한 후 "제출" 버튼을 누르는데, 안타깝게도 서버로부터 응답시간이 종종 길어져 방문자들이 이성을 잃은 나머지 "제출"을 연타하는 사태가 발생한다. 이게 우리가 해결해야 할 문제다.
ACM의 직원을 도와 연타된 중복을 걸러보자.
마지막 줄에 입력의 끝을 알리는 0이 주어진다. 각 줄의 마지막에는 한 칸을 띄고 '$' 표시가 붙는다.
[문제 접근]
무한 while문을 돌면서 0을 입력하면 break한다.
처음에는 단순히 중복을 없애는 문제인 줄 알고 set()함수를 사용하려고 하였으나 "ex) 4 98 76 20 76 → 98 76 20 76 $" 중복을 거르는 것이 아닌 연타된 중복을 거르는 문제이므로 set()은 사용하면 안된다.
[정답]
1. 무한 while문을 돌면서 입력할 숫자의 개수와 숫자들을 리스트 num에 입력받는다. 만약 num[0] 즉 입력할 숫자의 개수가 0이라면 break한다.
2. 입력할 숫자의 개수를 리스트 num에서 제거하고 연타된 중복을 거른다. for문을 돌면서 리스트 ans에 아무것도 들어있지 않다면 i를 추가하고 ans에 숫자가 들어있다면 제일 마지막에 추가된 ans[-1]와 i를 비교하여 이 둘이 같지 않다면 i를 ans에 추가한다.
3. 이 과정이 다 끝났다면 '$'를 ans에 추가한다.
4. 최종적으로 ans을 문자열의 형태로 출력한다.
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #2548: 대표 자연수 (0) | 2021.03.16 |
---|---|
[백준 파이썬] #11557: Yangjojang of The Year (0) | 2021.03.15 |
[백준 파이썬] #4101: 크냐? (0) | 2021.03.14 |
[백준 파이썬] #14909: 양수 개수 세기 (0) | 2021.03.14 |
[백준 파이썬] #1100: 하얀 칸 (0) | 2021.03.10 |