C, C++ 문제풀이

SW Expert Academy 8821. 적고 지우기

륵기 2020. 4. 12. 20:14
728x90
반응형

문제 링크 :

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW37UDPKCgQDFATy&categoryId=AW37UDPKCgQDFATy&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

오늘 게시하는 문제도 간단한 문제다.

주의해야할 점은 string을 어떻게 int형으로 변환할 것인가이다.

처음에는 string 변수에 stoi를 사용해서 변환하려 했으나, 이는 문자열 전체에 대해서반 타입 변경이 되며,

문자열의 i번째 원소는 char 형태이기 때문에 적용이 안된다.

그래서 간단한 변환법인 아스키 코드 계산을 통해서 변환했다.

문자에 -48을 하면 숫자로 변환되는 값인 점을 이용해서 문제를 풀었으며,

입력문자(숫자)의 각각의 개수가 짝수이면 쓰고 지웠다는 의미이기에, 홀 수에 해당되는 원소에 한해서만 count를 증가시켰다.

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int T;
	cin >> T;
	for (int i = 0; i < T; i++)
	{
		int arr[10] = {0,};//숫자배열
		string n;
		int count = 0;
		cin >> n;
		for (int j = 0; j < n.length(); j++)
		{	
			int num = n[j]-48;
			arr[num] += 1;			
		}
		for (int j = 0; j < 10; j++)
		{	
			if (arr[j] % 2 == 1)
			{
				count++;
			}
		}
		cout <<'#'<<i+1<<' '<<count <<'\n';

	}

	return 0;
}
728x90
반응형