728x90
반응형
파이썬 실습창을 열 수 있습니다.실습창 열기
1. 주민등록번호
현재 사용하는 주민등록번호는 다음과 같이 구성되어 있습니다.
Y | Y | M | M | D | D | - | G | H | I | J | K | L | M |
생년 | 월 | 일 | 성별 | 지역고유번호 | 등록 순서 |
검정 번호 |
전체 14자리인데 가운데의 -(하이펀)을 제외하면 13자리입니다.
각 자리의 숫자가 의미하는 것은 위의 표와 같다.
G자리의 숫자는 성별 뿐만 아니라 출생 년도와 출생지도 나타냅니다.
G자리 숫자의 의미는 다음 표와 같습니다.
G | 의미 | G | 의미 |
0 | 1800년대 출생한 대한민국 여성 | 5 | 1900년대 출생한 외국인 남성 |
1 | 1900년대 출생한 대한민국 남성 | 6 | 1900년대 출생한 외국인 여성 |
2 | 1900년대 출생한 대한민국 여성 | 7 | 2000년대 출생한 외국인 남성 |
3 | 2000년대 출생한 대한민국 남성 | 8 | 2000년대 출생한 외국인 여성 |
4 | 2000년대 출생한 대한민국 여성 | 9 | 1800년대 출생한 대한민국 남성 |
우리가 할 일은 이름과 주민등록번호를 입력받아서,
이름, 생년월일(4자리), 출생지, 성별을 출력하는 것입니다.
입력
같은 줄에 이름과 주민등록번호가 공백으로 구분되어 입력된다.
이름 사이에 공백이 없으며, 주민등록번호는 가운데에 -(하이펀)이 있는 14자리이다.
출력
같은 줄에 이름, 생년월일, 출생지, 성별을 하나의 공백으로 구분하여 출력한다.
- 이름: 이름은 입력과 같이 출력한다.
- 생년월일: 4자리 출생년도로 바꾸어 출력한다.(예:G자리 숫자가 3인 경우 020728 => 20020728)
- 출생지: 대한민국은 'korea', 외국은 'foreign'을 출력한다.
- 성별: 남성은 'male', 여성은 'female'을 출력한다.
각 항목은 15칸으로 왼쪽 정렬하여 출력한다.
입력의 예
Parkmoonsoo 950717-9120274
※ 이름과 번호 사이에 공백이 있습니다.
출력의 예
Parkmoonsoo 18950717 korea male
다음은 프로그램의 예입니다.
분석하여 이해하세요.
k,f,m,fe='korea foreign male female'.split() # 출력에 사용할 단어를 준비한다.
table=((18,k,fe),(19,k,m),(19,k,fe),(20,k,m),(20,k,fe), # G자리 숫자 의미를 인덱스 순서로 표를 만든다.
(19,f,m),(19,f,fe),(20,f,m),(20,f,fe),(18,k,m))
name,num=input().split() # 이름과 주민번호를 분할한다.
g=int(num[7]) # G자리의 숫자혈 문자를 숫자로 바꾼다
born,area,gender=table[g] # 표(table)의 값을 각 변수에 바인딩한다.
born=str(born)+num[:6] # 생년의 앞 2자리를 추가한다.
r=f'{name:15s} {born:15s} {area:15s} {gender:15s}'
print(r)
'''
8번 줄의 f-포맷이 실행되지 않으면 다음과 같이 고급 포맷으로 바꾸세요.
r='{0:15s} {1:15s} {2:15s} {3:15s}'.format(name,born,area,gender)
'''
쉽지 않은 문제에 도전하였습니다.
이 코드를 이해하였다면 보통 수준이 넘습니다.
충분히 이해되지 않아도 괜찮습니다.
프로그램을 구경하는데 목적이 있습니다.
수고하셨습니다.
오늘 끝.
728x90
반응형
'알고리듬' 카테고리의 다른 글
[알고리듬] #32 셑 메소드 (0) | 2024.04.04 |
---|---|
[알고리듬] #31 딕셔너리 메소드 (1) | 2024.04.03 |
[알고리듬] #29 리스트 튜플 레인쥐 메소드 (0) | 2024.03.31 |
[알고리듬] #28 스트링 포맷 (0) | 2024.03.30 |
[알고리듬] #27 스트링 메소드 (6) | 2024.03.30 |