백준 4592 중복을 없애자
문제
Al의 초콜릿 망고 회사는 방문자들이 2d 단지에 얼마나 많은 초콜릿 망고가 있는지 추측할 수 있는 웹 사이트를 갖고 있다. 방문자들은 1부터 99까지의 수를 추측한 후 "제출" 버튼을 누르는데, 안타깝게도 서버로부터 응답시간이 종종 길어져 방문자들이 이성을 잃은 나머지 "제출"을 연타하는 사태가 발생한다. 이게 우리가 해결해야 할 문제다.
ACM의 직원을 도와 연타된 중복을 걸러보자.
입력
각 줄마다 처음으로 정수 N(0 < N ≤ 25)이 주어진다. 그 다음 N개에 걸쳐 1부터 99 사이의 수가 주어진다.
마지막 줄에 입력의 끝을 알리는 0이 주어진다.
출력
각 케이스마다 한 줄씩 연속하는 중복을 제거한 원래의 제출 상태를 출력한다.
각 줄의 마지막에는 한 칸을 띄고 '$' 표시가 붙는다.
예제 입력 1
5 1 22 22 22 3
4 98 76 20 76
6 19 19 35 86 86 86
1 7
0
예제 출력 1
1 22 3 $
98 76 20 76 $
19 35 86 $
7 $
풀이 과정
입력 줄마다 리스트로 입력받아 첫 번째 원소가 '0'
이면 종료한다.
'0'
이 아니면 팝으로 제거한다.
중복을 제외하고 옮겨담을 리스트 li
를 선언한다. 초기 원소는 0
으로 한다.
입력받은 리스트의 한 원소마다 반복하는데, li
의 맨 뒤의 원소와 비교해 다르다면 li
에 그 원소를 삽입한다.
맨 처음 비교할 때 li
의 맨 뒤 원소는 0
이 되므로 입력받은 값에는 존재할 수 없기 때문에 맨 처음 비교한 값이 삽입될 수 있다.
처리가 끝난 후 li
의 맨 처음 원소를 제거한다.
result
변수에 join()
함수를 이용해서 문자열로 만든다.
코드
while True:
data = list(map(int, input().split()))
if data[0] == 0:
break
data.pop(0)
li = [0]
for num in data:
if li[-1] != num:
li.append(num)
li.pop(0)
result = ' '.join(map(str, li)) + ' $'
print(result)
Author And Source
이 문제에 관하여(백준 4592 중복을 없애자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mynote/백준-4592-중복을-없애자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)