[1427] 백준 : 소트 인 사이드(C)

지환·2022년 8월 10일
0

백준(C)

목록 보기
43/47
post-thumbnail

출처 | https://www.acmicpc.net/problem/1427

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

코드[1]

#include <stdio.h>
#include <string.h>

int main()
{
	// 공백 없이 한 줄로 주어지기 때문에 gets 함수를 이용하여 char형으로 받는다.
	// gets 자체가 문자열로 입력을 받기 때문에 char로 받는다.
	// 입력 받은 수의 각 자리수를 비교하여 내림차순으로 정렬한다.
	// puts 함수를 이용하여 정렬된 수를 출력한다.

	char N[11] = { NULL};

	int temp;

	gets(N);

	for (int i = 0; i < strlen(N) - 1; i++)
	{
		for (int j = i; j < strlen(N); j++)
		{
			if (N[i] < N[j])
			{
				temp = N[i];
				N[i] = N[j];
				N[j] = temp;
			}
		
		}
	}

	puts(N);

	return 0;



}

코드[2]


#include <stdio.h>
#include <string.h>
int main()
{

	int arr[10000] = { 0, };
	char s[10000];
	int tmp = 0;
	int i, j;
	scanf_s("%s", &s);

	for (i = 0; i < strlen(s); i++)
		arr[i] = s[i] - '0';

	for (i = 0; i < strlen(s) - 1; i++)
	{
		for (j = 0; j < strlen(s) - 1; j++)
		{
			if (arr[j] < arr[j + 1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}

	for (i = 0; i < strlen(s); i++)
		printf("%d", arr[i]);

	return 0;
}

느낀점

차이점은 gets | puts의 사용 유무다.

많이 부족하다. 더 열심히 공부하자.

profile
아는만큼보인다.

0개의 댓글