본문 바로가기
Programming Language/C C++

[알고리즘 문제풀이] 5. 나이 계산★

by 9루트 2022. 1. 3.

앞에는 6글자, 뒤에는 7글자로 총 6 + 1 + 7 = 14개 글자가 들어간다.

 

내가 푼 풀이

#include <iostream>
using namespace std;

int main(){
	
	int year = 0;

	char a[14];

	for( int i = 0; i < 14; i++){
		cin >> a[i];
	}
	
	
	year = 10*(a[0]-48)+a[1]-48;
	
	// 8번째, 즉 a[7]로 년대, 성별 판단
	switch(a[7]){
		case '1' :
			cout << 20+100- year << " " << "M" << endl;
			break;
		case '2' :
			cout << 20+100-year << " " << "W" << endl;
			break;
		case '3' :
			cout << 20-year << " " << "M" << endl;
			break;
		case '4' :
			cout << 20-year << " " << "W" << endl;
			break;
	}
	
	
	return 0;
}

 

 

해답

#include <stdio.h>       
using namespace std;

int main(){
	
	// freopen("input.txt", "rt", stdin);
	
	int birthYear, age = 0;
	
	char identy[20]; // 넉넉하게 배열 사이즈를 20으로 잡 자
	
	//4. 주민등록증 번호를 입력한다. 
	
		scanf("%s", &identy);
	
	
	//2. 나이: 주민등록증 1,2,7 번째 자리로 판단
	if( identy[7] == '1'| identy[7] == '2'){
		birthYear = 1900 + 10 * (identy[0]-48) + identy[1] - 48;
	} 
	else{
		birthYear = 2000 + 10 * (identy[0]-48) + identy[1] - 48;
	}
	
	age = 2019 - birthYear +1;
	printf("%d", age);
	
	
	//3. 성별: 주민등록증 7번째 자리로 판단
	if( identy[7] == '1'| identy[7] == '3') printf(" M\n");
	else
	printf(" W\n");
	
	//1. 나이와 성별을 출력한다.
	
	return 0;
}

'1' 작은 따옴표 꼭 넣기

C언어로 바꾸면서 배열을 입력할 때 for문으로 입력할 필요가 없어졌다.

char identy[20]; // 넉넉하게 배열 사이즈를 20으로 잡 자
	
	//4. 주민등록증 번호를 입력한다. 
	
		scanf("%s", &identy);

scanf 한 줄이면 된다.