📄문제
주민등록증의 번호가 주어지면 주민등록증 주인의 나이와 성별을 판단하여 출력하는 프로그램 을 작성하세요. 주민등록증의 번호는 -를 기준으로 앞자리와 뒷자리로 구분된다.
뒷자리의 첫 번째 수가 1이면 1900년대생 남자이고, 2이면 1900년대생 여자, 3이면 2000년대 생 남자, 4이면 2000년대생 여자이다.
ℹ️ 조건
올해는 2019년이다.
해당 주민등록증 주인의 나이와 성별을 출력하시오.
⬇️ 입력
첫 줄에 주민등록증 번호가 입력한다.
780316-2376152
⬆️ 출력
첫 줄에 나이와 성별을 공백을 구분으로 출력하세요. 성별은 남자는 M(man), 여자는 W(Woman)로 출력한다.
42 W
📝 풀이
#include <iostream>
int main(int argc, const char * argv[]) {
// 주민등록번호 앞, 뒤 값
int first, last;
// 주민등록 번호를 포맷으로 입력 받기
scanf("%d-%d", &first, &last);
// birthYear은 first에서 앞 두글자
int birthYear = first / 10000;
// sex는 last에서 앞 한글자
int sex = last / 1000000;
// 성별 입력이 3, 4이면 2000년대생, 1, 2이면 1900년대생
int age = 2019 - birthYear + 1 - (sex < 3 ? 1900 : 2000);
bool isMale = sex % 2;
printf("%d %c", age, isMale ? 'M' : 'W');
return 0;
}
- -를 기준으로 앞, 뒤 입력을 받아 각각 앞 두자리, 앞 한자리가 연산에 필요합니다.
- 각각 생년과 성별이 되며, 성별값이 3, 4인경우 2000년대에 태어난 경우로 20xx로 계산됩니다.
- 이러한 조건을 통해 sex값이 3보다 작으면 1, 2이므로 1900년대에 태어난것으로 간주하여 나이를 계산할 수 있습니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 영어단어 복구 / scanf 공백 포함 입력받기 (0) | 2023.10.13 |
---|---|
[C++] 숫자만 추출 (0) | 2023.10.13 |
[C++] 진약수의 합 (0) | 2023.09.27 |
[C++] 자연수의 합 (0) | 2023.09.27 |
[C++] 1부터 N까지 M의 배수합 (0) | 2023.09.27 |