초기 네이버 기록/알고리즘(C)

백준 (C언어)그리디 알고리즘 단어수학 백준1339번

뜨거운 개발자 2023. 1. 4. 00:20

실패코드

#include<stdio.h>
#include<stdlib.h>


int tenup(int a)
{
	int k = 1;
	for (int i = 0; i < a; i++)
		k *= 10;
	return (k);
}
int	where_is_alph(char a, char* arr, int len)
{
	int i = 0;
	int result = 0;
	if (len == 0)
		return 0;
	while (1)
	{
		if (arr[i] == a)
			result += tenup(len - i - 1);
		if (i == 7)
			break;
		i++;
	}
	return (result);
}

void sort_arr(int* arr)
{
	int tmp;
	for (int i = 0; i < 26; i++)
	{
		for (int j = 0; j < 25-i; j++)
		{
			if (arr[j] < arr[j+1])
			{
				tmp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = tmp;
			}
		}
	}
}//큰순 으로 정렬

int main()
{
	int input;
	scanf("%d", &input);
	char arr[10][8];
	int len[10] = { 0 };
	int all_alpha[26] = { 0 };//알파벳 A부터 J까지 0123456789 속았다 A부터 Z다
	for (int i = 0; i < input; i++)
	{
		scanf("%s", arr[i]);
		len[i] = strlen(arr[i]);
		
	}
	for (int i = 0; i < input; i++)
	{
		for (int j = 0; j < 26; j++)
		{
			all_alpha[j] += where_is_alph('A' + j, arr[i], len[i]);//같은 문자가 나오는경우를 어떻게 처리할까
		}
	}
	sort_arr(all_alpha);
	long long sum=0;
	for (int i = 0; i < input; i++)
	{
		sum += (all_alpha[i] * (9-i));
	}
	printf("%d", sum);
}

이 문제가 안 풀린다.. 왤까

​성공코드

#include<stdio.h>
#include<stdlib.h>


int tenup(int a)
{
	int k = 1;
	for (int i = 0; i < a; i++)
		k *= 10;
	return (k);
}

int	where_is_alph(char a, char* arr, int len)
{
	int i = 0;
	int result = 0;
	while (1)
	{
		if (arr[i] == a)
			result += tenup(len - i-1);
		if (i == 7)
			break;
		i++;
		//printf("%d result:%d\n",i, result);
	}
	//printf(" pppppresult:%d\n", result);
	return (result);
}

void sort_arr(long long* arr)
{
	int tmp;
	for (int i = 0; i < 26; i++)
	{
		for (int j = 0; j < 25-i; j++)
		{
			if (arr[j] < arr[j+1])
			{
				tmp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = tmp;
			}
		}
	}
}

int main()
{
	int input;
	scanf("%d", &input);
	char arr[10][8];
	int len[10] = { 0 };
	long long all_alpha[26] = { 0 };
	for (int i = 0; i < input; i++)
	{
		scanf("%s", arr[i]);
		len[i] = strlen(arr[i]);
		
	}
	for (int i = 0; i < input; i++)
	{
		for (int j = 0; j < 26; j++)
		{
			//printf("1111aaaaaaaaaa%d:%lld\n", i, all_alpha[j]);
			all_alpha[j] += where_is_alph('A' + j, arr[i], len[i]);
			//printf("1111aaaaaaaaaa%d:%lld\n", i, all_alpha[j]);
		}
	}
	sort_arr(all_alpha);
	long long sum=0;
	for (long long i = 0; i < 10; i++)
	{
		//printf("aaaaaaaaaa%lld:%lld\n", i, all_alpha[i]);
		sum += (all_alpha[i]*(9-i));
	}
	printf("%lld\n", sum);
}
728x90