관리 메뉴

지나가는 이야기

[C언어] 범위에 속한 숫자 개수 구하기 / 1~N에 속하는 숫자 M의 개수 구하기 본문

Computer language : 컴퓨터 언어/C

[C언어] 범위에 속한 숫자 개수 구하기 / 1~N에 속하는 숫자 M의 개수 구하기

지나가는 이야기 2020. 9. 3. 08:19
728x90
반응형

 

- [문제]

숫자 1부터 1535까지의 숫자가 있다. 이 숫자들 중에서 3의 총개수를 구하시오.

(ex. 333은 3이 3개이다.)

 

이번에 짜 볼 프로그램은 위에서 설명한 문제처럼 숫자 1~N에 속하는 숫자 M의 개수를 구하는 프로그램이다. 이런 프로그램을 짜는 방법은 여러 가지가 있지만 이 글에서는 2개의 단계로 만들 것이다.

1. 숫자를 문자로 변환

2. 변환한 문자에서 해당 문자('3')가 있으면 카운트 +1

 

int start_number;	// 시작 숫자
int end_number = 1535;	// 마지막 숫자
int count = 0;		// 3의 개수를 총 합
char number[5];		// 숫자1535까지 비교하므로 문자열길이를 5로 함

먼저 위 코드에서는 프로그램에서 사용할 변수들을 지정했다.

 

for (start_number = 1; start_number <= end_number; start_number++) {	// 1부터 1535까지 반복문 사용
	sprintf(number, "%d", start_number);				// 숫자를 문자로 변환
    
    
	int j = strlen(number);						// 문자열 number의 길이를 j로 저장
	for (int i = 0; i < j; i++) {					// 인덱스 0부터 문자열길이까지 반복문 사용
		if (number[i] == '3') {					// 문자열 안에 문자 3이 있으면 카운트 1증가
			count++;
			//printf("%4d [%d] \n", start_number, count);	// 확인용 printf문
		}
		else {
			continue;					// 문자열 안에 문자 3이 없으면 다시 처음으로
		}
	}
}

printf("Total count of number '3' : %d \n", count);			// 총 개수 출력

그리고 위 코드를 보면, for문을 사용하여 1부터 1535까지 반복을 진행했다. sprintf함수를 사용하여 숫자를 문자로 변경하였으며, for문과 if문을 활용하여 해당 문자열에 찾고자 하는 문자('3')가 있으면 카운트가 1 올라가게 만들었다.

 


//숫자 1부터 1535까지의 숫자가 있다.이 숫자들 중에서 3의 총 개수를 구하시오.
//(ex. 333은 3이 3개 이다.)

#pragma warning(disable:4996)	// sprintf_s의 에러코드인 C4996을 방지하기 위한 코드
#include <stdio.h>

int main(void) {

	int start_number;	// 시작 숫자
	int end_number = 1535;	// 마지막 숫자
	int count = 0;		// 3의 개수를 총 합
	char number[5];		// 숫자1535까지 비교하므로 문자열길이를 5로 함

	for (start_number = 1; start_number <= end_number; start_number++) {	// 1부터 1535까지 반복문 사용
		sprintf(number, "%d", start_number);				// 숫자를 문자로 변환

		int j = strlen(number);						// 문자열 number의 길이를 j로 저장
		for (int i = 0; i < j; i++) {					// 인덱스 0부터 문자열길이까지 반복문 사용
			if (number[i] == '3') {					// 문자열 안에 문자 3이 있으면 카운트 1증가
				count++;
				//printf("%4d [%d] \n", start_number, count);	// 확인용 printf문
			}
			else {
				continue;					// 문자열 안에 문자 3이 없으면 다시 처음으로
			}
		}
	}

	printf("Total count of number '3' : %d \n", count);			// 총 개수 출력

	return 0;
}

위 코드는 전체 코드이다.

 

728x90
반응형
Comments