나이계산 (문자열 컨트롤하기)
728x90
나이계산
주민등록증의 번호가 주어지면 주민등록증 주인의 나이와 성별을 판단하여 출력하는 프로그램 을 작성하세요. 주민등록증의 번호는 -를 기준으로 앞자리와 뒷자리로 구분된다. 뒷자리의 첫 번째 수가 1이면 1900년대생 남자이고, 2이면 1900년대생 여자, 3이면 2000년대 생 남자, 4이면 2000년대생 여자이다. 올해는 2019년입니다. 해당 주민등록증 주인의 나이와 성별을 출력하세요.
▣ 입력설명 첫 줄에 주민등록증 번호가 입력됩니다.
▣ 출력설명 첫 줄에 나이와 성별을 공백을 구분으로 출력하세요.
성별은 남자는 M(man), 여자는 W(Woman)로 출력한다.
▣ 입력예제 1
780316-2376152
▣ 출력예제 1
42 W
▣ 입력예제 2
061102-3575393
▣ 출력예제 2
14 M
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
// freopen("test.txt", "rt", stdin);
char a[20];
int year, age;
scanf("%s", &a);
if (a[7] == '1' || a[7] == '2')
year = 1900 + ((a[0] - '0') * 10 + (a[1] - '0'));
else year = 2000 + ((a[0] - '0') * 10 + (a[1] - '0'));
age = 2020 - year + 1;
printf("%d ", age);
if (a[7] == '1' || a[7] == '3') printf("M\n");
else printf("W\n");
return 0;
}
char 타입을 int 타입처럼 사용하기 위해서는 아스키 코드에 대한 이해가 있어야합니다.
문자 '0' 은 아스키코드 48번입니다. 123456-1234567 주민등록번호의 배열의 7번째가
출생년도와 남자와 여자를 구분하는 key 이기 때문에 if 문에서 a[7] 로 비교를 하고
주민등록번호 0 번째와 1번째 문자열을 가져와 나이를 구합니다.
95년생일경우 a[0] 은 9 이고 a[1] 은 5입니다 a[0] 에 * 10 을하면 90 이 아니라 아스키값 * 10을 해서 엉뚱한 값이 나와버리게 됩니다.
a[0] - 48 을 하고 * 10을 해도 되지만 더 직관적으로 (a[0] - '0') * 10을 했습니다.
728x90
'Algorithm > 코딩테스트 준비' 카테고리의 다른 글
javascript - 괄호문자제거 (자료구조 stack and queue) (0) | 2021.08.14 |
---|---|
선생님 퀴즈 (0) | 2020.11.27 |
Anagram (구글 인터뷰문제) (0) | 2020.11.25 |
숫자만 추출해서 약수 출력하기 (0) | 2020.11.08 |
댓글
이 글 공유하기
다른 글
-
javascript - 괄호문자제거 (자료구조 stack and queue)
javascript - 괄호문자제거 (자료구조 stack and queue)
2021.08.14 -
선생님 퀴즈
선생님 퀴즈
2020.11.27 -
Anagram (구글 인터뷰문제)
Anagram (구글 인터뷰문제)
2020.11.25 -
숫자만 추출해서 약수 출력하기
숫자만 추출해서 약수 출력하기
2020.11.08