SWEA(SWExpertacAdemy)

[SWEA] 8821. 적고 지우기 D3 (자바)

심층코드 2025. 5. 16. 19:01

8821. 적고 지우기 D3


진수는 어린 동욱이에게 숫자 공부를 시키고 있다.

진수는 숫자를 여러 번 말한다.

그러면 동욱이는 진수가 부르는 숫자를 공책에 적거나 지운다.

숫자를 적을 때는 공책에 그 숫자가 적혀 있지 않을 때이고,

숫자를 지울 때는 공책에 그 숫자가 적혀 있을 때이다.

처음 공책에는 어떤 숫자도 적혀 있지 않다고 할 때,

마지막에 공책에 적힌 숫자의 개수를 구하는 프로그램을 작성하라.


[입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 ‘0’에서 ‘9’사이의 숫자로 이루어진

길이 1이상 104이하의 문자열이 주어진다.

문자열은 진수가 말하는 숫자를 순서대로 나타낸다.


[출력]

각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,

각 테스트 케이스 마다 마지막에 공책에 적힌 숫자의 개수를 출력한다.

입력
3
121
0123456789
555555
// 테스트 케이스 개수
// 첫 번째 테스트 케이스 문자열
// 두 번째 테스트 케이스 문자열
 
 
출력
#1 1
#2 10
#3 0
// 첫 번째 테스트 케이스 결과
// 두 번째 테스트 케이스 결과
 

[코드]

import java.io.*;
import java.util.*;

public class Solution {

	public static void main(String[] args) throws IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		int T=Integer.parseInt(br.readLine());
		for (int i = 1; i <= T; i++) {
			String A = br.readLine();
			List<Integer> arr = new ArrayList<>();
			for (int i2 = 0; i2 < A.length(); i2++) {
				arr.add((int)A.charAt(i2)-48);
			}
			Collections.sort(arr,Collections.reverseOrder());
			for (int i3 = 0; i3 < arr.size()-1; ) {
				if(arr.get(i3)==arr.get(i3+1)){
					arr.remove(i3+1);
					arr.remove(i3);
					i3=0;
				}
				else {
					i3++;
				}
			}
			System.out.println("#"+i+" "+arr.size());
		}
		br.close();
	}

}