[Python]_주민등록번호 가리기

hanseungjune·2022년 6월 11일
0

Python

목록 보기
23/38
post-custom-banner

풀이

def mask_security_number(security_number):
    # 코드를 입력하세요.
    security_number = security_number[:-4] + "****"
    return security_number

# 테스트
print(mask_security_number("880720-1234567"))
print(mask_security_number("8807201234567"))
print(mask_security_number("930124-7654321"))
print(mask_security_number("9301247654321"))
print(mask_security_number("761214-2357111"))
print(mask_security_number("7612142357111"))

나는 그렇게 어렵지는 않았던 문제였다. 뒤에서부터 4번째자리까지 기준을 잡고 그 뒤에 **** 을 더했기 때문에 문제가 없었는데, 풀이 후기보면 말들이 많았다. 그래서 모범답안을 참고해야할 것 같다.

모범답안

def mask_security_number(security_number):
    # security_number를 리스트로 변환
    num_list = list(security_number)

    # 마지막 네 값을 *로 대체
    for i in range(len(num_list) - 4, len(num_list)):
        num_list[i] = "*"

    # 리스트를 문자열로 복구
    total_str = ""
    for i in range(len(num_list)):
        total_str += num_list[i]

    return total_str
    
# 테스트
print(mask_security_number("880720-1234567"))
print(mask_security_number("8807201234567"))
print(mask_security_number("930124-7654321"))
print(mask_security_number("9301247654321"))
print(mask_security_number("761214-2357111"))
print(mask_security_number("7612142357111"))

먼저 문자열을 배열로 바꿔주는 list() 를 사용한다. 그리고 반복문을 통해서 배열요소를 하나씩 빼와서 *로 바꿔 주는데 range()를 활용한다. 시작점은 len(배열)-4 로 하고, len(배열)로 끝점으로 설정한다. 그리고 total_str 이라는 빈 문자열을 가져와서 또 다른 반복문을 통해서 배열의 요소를 차곡차곡 쌓으면 된다.

def mask_security_number(security_number):
    num_list = list(security_number)

    # 마지막 네 값을 *로 대체
    for i in range(len(num_list) - 4, len(num_list)):
        num_list[i] = '*'

    # 리스트를 문자열로 복구하여 반환
    return ''.join(num_list)

join() 을 활용하면 배열을 문자열 형식으로 붙여줄 수 있다.
''은 구분자로서 없다는 뜻이기에 배열을 다닥다닥 붙여줄 수 있다는 얘기이다.

아무튼 문자열을 배열로 바꾸는 list()
join() 구분자를 앞에 설정해주고 배열을 문자열로 붙일수 있다는 것도 알게됨

profile
필요하다면 공부하는 개발자, 한승준
post-custom-banner

0개의 댓글