meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • docker
  • 배포인프라
  • 테크커리어
  • 리눅스인증
  • 중첩라우트
  • 안드로이드adaptor
  • router-link
  • SASS Variables
  • dockersecret
  • 이차원배열정렬
  • Kotlin
  • django
  • gabagecollecter
  • dp #알고리즘
  • DHCP
  • 개발자도서
  • Proxy
  • 코틀린자료형
  • 리눅스방화벽
  • cpu사용률

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

IT_study/Coding test

[Coding test Basic with c++] 나이 계산

2021. 12. 16. 20:38
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
    'IT_study/Coding test' 카테고리의 다른 글
    • [Coding test Basic with c++] 영어단어 복구
    • [Coding test Basic with c++] 숫자만 추출
    • [Coding test Basic with c++] 나이차이 계산
    • 코테준비 : 코드 구현력 기르기 with C++ (1) - 난이도 최하
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바