728x90
반응형
문제
주민등록증의 번호가 주어지면 주민등록증 주인의 나이와 성별을 판단하여 출력하는 프로그램 을 작성하세요. 주민등록증의 번호는 -를 기준으로 앞자리와 뒷자리로 구분된다.
뒷자리의 첫 번째 수가 1이면 1900년대생 남자이고, 2이면 1900년대생 여자, 3이면 2000년대 생 남자, 4이면 2000년대생 여자이다.
올해는 2019년입니다. 해당 주민등록증 주인의 나이와 성별을 출력하세요.
▣ 입력설명 첫 줄에 주민등록증 번호가 입력됩니다.
▣ 출력설명 첫 줄에 나이와 성별을 공백을 구분으로 출력하세요.
성별은 남자는 M(man), 여자는 W(Woman)로 출력한다.
입력 예제
780316-2376152
출력 예제
42 W
풀이
#include <stdio.h>
using namespace std;
int main(){
// 나이 계산
char a[20];
int year, age;
scanf("%s", &a);//문자열 읽음
if(a[7]=='1' || a[7]=='2') year=1900+((a[0]-48)*10+(a[1]-48)); //아스키 숫자로 계산
else year=2000+((a[0]-48)*10+(a[1]-48));
age=2019-year+1;
printf("%d", age);
if(a[7]=='1' || a[7]=='2') printf("M\n");
else printf("W\n");
return 0;
}
주민등록 번호를 char타입 배열에 담고, 7번째 배열에 있는 1 혹은 2의 값에 따라 출생년도를 계산한다.
문자 리터럴(char)은 유니코드를 변환되어 저장되기 때문에 아스키 숫자(int)로 변경하여 계산하여야 한다.
아스키(ASCII) 코드 (char형 <-> int형)
char형 아스키 값 0 48 1 49 2 50 3 51 4 52 ... ... 9 57 숫자의 아스키 48번 값부터 57번까지 char타입 형의 0부터 9까지를 할당하고 있다.
따라서 char타입에 48을 빼주면 int형으로 변환되어 계산할 수 있다.
반응형
'IT_study > Coding test' 카테고리의 다른 글
[Coding test Basic with c++] 올바른 괄호 (0) | 2021.12.16 |
---|---|
[Coding test Basic with c++] 영어단어 복구 (0) | 2021.12.16 |
[Coding test Basic with c++] 숫자만 추출 (0) | 2021.12.16 |
[Coding test Basic with c++] 나이차이 계산 (0) | 2021.12.16 |
코테준비 : 코드 구현력 기르기 with C++ (1) - 난이도 최하 (0) | 2021.08.25 |