세 자리 양의 정수 한 개를 입력 받아 각 자리수가 모두 같으면 3을, 두 자리 수만 같으면 2를, 각 자리수가 모두 다르면 1을 출력하시오.

 

실행 예시 1
실행 예시 2
실행 예시 3


#pragma warning(disable:4996)

#include <stdio.h>

int main() { //main함수 선언
	int input; //세 자리 양의 정수(입력값)
	int num1, num2, num3; //100의자리 수, 10의자리 수, 1의자리 수
	int count = 1; //각 자리수가 같으면 증가.(모두 같으면 3, 두 자리 수만 같으면 2, 모두 다르면 1) - 모두 다를 때 1이기 때문에 변수값 1로 선언.


	scanf("%d", &input); //세 자리 양의 정수 입력 받음.

	num1 = input / 100; //num1은 100의자리 수
	num2 = (input % 100) / 10; //num2는 10의자리 수
	num3 = (input % 10) / 1; //num3는 1의자리 수
	
	(num1 == num2) || (num1 == num3) || (num2 == num3) ? count = 2 : count; //100의자리 수와 10의자리 수가 같거나, 100의자리 수와 1의자리 수가 같거나, 10의자리 수와 1의자리 수가 같다면 ( = 즉, 두 자리 수만 같으면 ) count에 2 대입. 그렇지 않으면 count 냅둠.
	/*윗 식과 아랫 식 순서를 바꾸면 안됨. (각 자리수가 모두 같아도 결국 count에 2가 대입되기 때문에 2가 출력되므로 순서를 바꾸면 안됨.)*/
	(num1 == num2) && (num1 == num3) && (num2 == num3) ? count = 3 : count; //100의자리 수와 10의자리 수가 같고, 100의자리 수와 1의자리 수가 같고, 10의자리 수와 1의자리 수가 같다면 ( = 즉, 각 자리 수가 모두 같으면 ) count에 3 대입. 그렇지 않으면 count 냅둠.
	
	printf("%d\n", count); //count값 출력. 각 자리수가 모두 같으면 3을 출력하고, 두 자리수만 같으면 2를, 각 자리수가 모두 다르면 1을 출력

	return 0; //0 반환
}
반응형