Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 비전공자
- float
- 10171
- 2588
- 코테
- C
- 알람시계
- 코딩테스트
- 코딩
- 전공자
- 2884
- 프로그래머스
- precision
- 정보처리기사
- 정보처리기사필기
- 정보처리기사실기
- 백준
- 프로그래밍
- 곱셈
- 10172
- 7008번
- 합격후기
- 프로그래밍언어
- 정처기실기
- 정처기필기
- 개발
- 정보처리기사합격후기
- 정처기
- double
- 파이썬
Archives
- Today
- Total
Like a Star
26일차 여름방학 일지 본문
장마가 끝나고 나니 날씨가 다시 더워지고 있다.
어제 아침에도 살짝 더운 기운 때문에 일어났다.
한 주 동안 비대면으로 수업했던 것 때문인지 몸이 적응을 아직 못한 것 같다.
얼마 전에 대면으로 수업했을 때 보다 최근이 더 피로한 느낌이다.
어제의 빅데이터 수업은 그저께 내용에 이어서 진행되었다.
내용 자체가 어렵지는 않은데 응용하기가 어렵다는 생각이 든다.
익숙해지는 것밖에는 방법이 없다고 생각돼서 파이썬을 자주 다뤄보고 있다.
선생님이 수업을 마치면서 하루에 두 세 문제씩 문제를 풀라고 하셨다.
한 달이 지나면 눈에 띄게 실력을 갖추게 될 거라고 하셔서 조금씩 시간을 투자해 보려고 한다.
당분간은 시간이 여유가 조금 있어서 아침에 짧은 시간 동안 파이썬으로 문제를 풀어보려고 한다.
백준에서 문제를 조금 풀고 기사 공부를 조금 하면서 하루를 시작할 예정이다.
오전 아홉 시부터 수업을 들으면 저녁 여섯 시까지의 스케줄이 끝난다.
어제 수업 시간에 선생님께서 문제를 내주셨다.
단순하게 문제의 로직만 맞춰서 코드를 짜서 깨끗한 코드는 아니다.
오늘 풀이해 주신다고 하셔서 비교하면서 아쉬웠던 부분을 아래와 분석해보려고 한다.
# 함수 연습문제
# 주민번호를 입력하면 유효한지 유효하지 않은지 bool값으로 반환하는 함수를 정의하고
# 함수를 실행시켜서 결과를 출력하시오
# * 사용자로부터 주민번호 입력 받음 : 000000-0000000 (문자열로 읽어들임)
# -을 제외시키고 한문자 한문자를 정수로 변환해서 int[] 에 저장 (배열의 크기는 13)
# 주민번호 체크 :
# 주민번호 앞에서부터 12자리의 각 자리의 수에 가중치
# { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 }를 곱합니다.
# 곱한수를 모두 더하여 총합을 구합니다.
# 총합을 11로 나눈 나머지를 구합니다.
# 그 나머지를 11에서 뺀 결과가 CHECK DIGIT 입니다.
# 뺀 결과가 2자리수인 경우에는 2자리수를 10으로 나눈 나머지가 CHECK DIGIT가 됩니다.
# CHECK DIGIT의 값이 입력 숫자 스트링의 13번째 숫자와 같으면 "CORRECT", 다르면 "INCORRECT"를 출력합니다.
# HINT> (11-나머지)%10 또는 (11-total%11)%10
import numpy as np
import pandas as pd
no_tb = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5] # 가중치
mn = input('주민등록번호:') # 입력 받는 번호
int_mn = [] # 숫자로 변환된 13자리가 들어가는 리스트
hap = 0 # 12개의 가중치 숫자 합
cd = 0 # CHECK DIGIT
for i in mn:
if i != '-': # -를 제외한 나머지 숫자를
int_mn.append(int(i)) # int_mn 리스트에 순서대로 삽입
for i in range(12):
int_mn[i] *= no_tb[i] # 0-11(12개의 숫자)를 no_tb(가중치)를 곱해서 수정
hap += int_mn[i] # 가중된 값들을 hap 변수에 각각 덧셈
cd = 11 - hap % 11 # CHECK DIGIT를 계산
if cd >= 10: # CHECK DIGIT가 두자리수면
cd %= 10 # 10으로 나눈 나머지로 대치
if cd == int_mn[-1]: # CHECK DIGIT와 int_mn의 맨 끝 숫자(13번째 숫자)가 같다면
print('CORRECT') # CORRECT 출력
else: # 아니라면
print('INCORRECT') # INCORRECT 출력
'취업사관학교 7기 > 여름방학 일지' 카테고리의 다른 글
28일차 여름방학 일지 (0) | 2022.07.29 |
---|---|
27일차 여름방학 일지 (0) | 2022.07.28 |
25일차 여름방학 일지 (0) | 2022.07.26 |
24일차 여름방학 일지 (0) | 2022.07.25 |
23일차 여름방학 일지 (0) | 2022.07.22 |
Comments