본문 바로가기

알고리즘 · 코딩

[SWEA 7728] 다양성 측정

[SWEA 7728. 다양성 측정]

숫자는 다양성을 가지고 있다. 다양성이란, 숫자를 구성하는 수의 종류를 의미한다.

예를 들어서 1512 라는 숫자는 ‘1’, ‘5’, ‘2’로 구성되어 있기 때문에 다양성이 3이다.

숫자가 주어졌을 때 그 숫자의 다양성을 구하는 프로그램을 작성하라.

C++ 풀이 1차

#include <iostream>
#include <string>
using namespace std;

int cal(int tc) {
	int check[10] { 0 };
	int answer{ 0 };

	while (tc >= 10) {
		check[tc % 10]++;
		tc = tc / 10;
	}
	check[tc]++;

	for (int i = 0; i < 10; i++) {
		if (check[i] != 0)
			answer++;
	}
	return answer;
}

int main() {
	int number{ 0 }, tc;
	cin >> number;
	for (int i = 1; i <= number; i++) {
		cin >> tc;
		cout << '#' << i << ' ' << cal(tc) << endl;
	}
	return 0;
}

실행시간이 15ms 가 나와서 check 배열 타입을 변경하였다.

 

C++ 풀이 2차

#include <iostream>
#include <string>
using namespace std;

int cal(int tc) {
	bool check[10] { false };
	int answer{ 0 };

	while (tc >= 10) {
		check[tc % 10] = true;
		tc = tc / 10;
	}
	check[tc] = true;

	for (int i = 0; i < 10; i++) {
		if (check[i])
			answer++;
	}
	return answer;
}

int main() {
	int number{ 0 }, tc;
	cin >> number;
	for (int i = 1; i <= number; i++) {
		cin >> tc;
		cout << '#' << i << ' ' << cal(tc) << endl;
	}
	return 0;
}

13ms...로 끝냈다

문제링크

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

반응형