C++

[백준 알고리즘] 4592번 : 중복을 없애자, c++

2022. 3. 5. 12:25

https://www.acmicpc.net/problem/4592

 

4592번: 중복을 없애자

Al의 초콜릿 망고 회사는 방문자들이 2d 단지에 얼마나 많은 초콜릿 망고가 있는지 추측할 수 있는 웹 사이트를 갖고 있다. 방문자들은 1부터 99까지의 수를 추측한 후 "제출" 버튼을 누르는데, 안

www.acmicpc.net

c++로 백준 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 $

 

 

 

 

<문제 풀이>

1. while 반복문을 통해 n이 0이 입력될 때까지 주어진 문제를 해결한다.

 

- while 반복문 코드 내용 -

n을 입력받는다.

입력받은 n이 0이라면 반복문을 종료한다.

숫자 n개를 더 입력받아 배열에 저장한다.

배열에 저장된 숫자들 중 서로 이웃한 숫자들끼리 중복되는 숫자가 있다면 둘 중 앞의 수를 0으로 바꾼다.

0을 제외하고 배열에 저장된 숫자를 하나씩 출력한다.

모두 출력되었다면 마지막으로 '$'를 출력하고 줄을 건너띈다.

다시 while문의 처음으로 돌아간다.

 

 

 

코드는 다음과 같다.