| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 다형성
- OOP
- 상속
- 유도클래스
- 멤버함수로구현
- python
- 주피터
- 동적바인딩
- 람다식
- STL
- C++
- 포인터
- 점프투파이썬
- 연산자오버로딩
- 코드잇
- 얕은복사
- 기본클래스
- 11382번
- list comprehension
- 백준
- c++코딩테스트합격자되기
- 제네릭프로그래밍
- 데이터사이언스
- 코딩테스트
- OpenCV
- 스택
- 깊은복사
- 프로그래머스lv2
- 참조자
- 인프런
- Today
- Total
WjExplor Story
주민등록번호 가리기 본문
실습 설명
주민등록번호 YYMMDD-abcdefg는 총 열세 자리인데요.
앞의 여섯 자리 YYMMDD는 생년월일을 의미합니다.
- YY → 연
- MM → 월
- DD → 일
뒤의 일곱 자리 abcdefg는 살짝 복잡합니다.
- a → 성별
- bc → 출생등록지에 해당하는 지방자치단체의 고유번호
- defg → 임의의 번호
보시다시피 많은 부분은 특정 규칙대로 정해져 있는데요. 여러분에 대한 몇 가지 정보만 알면, 마지막 네 개 숫자 defg를 제외한 앞의 아홉 자리는 쉽게 알 수 있다는 거죠.
그래서 저희는 주민등록번호의 마지막 네 자리 defg만 가려 주는 보안 프로그램을 만들려고 합니다.
mask_security_number라는 함수를 정의하려고 하는데요. 이 함수는 파라미터로 문자열 security_number를 받고, security_number의 마지막 네 글자를 '*'로 대체한 새 문자열을 리턴합니다.
참고로 파라미터 security_number에는 작대기 기호(-)가 포함될 수도 있고, 포함되지 않을 수도 있는데요. 작대기 포함 여부와 상관 없이, 마지막 네 글자가 '*'로 대체되어야 합니다!
출처 : 코드잇
실습 결과
def mask_security_number(security_number):
# 여기에 코드를 작성하세요
return security_number[:-4]+"****"
# 테스트 코드
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"))
# 실습결과
# 880720-123****
# 880720123****
# 930124-765****
# 930124765****
# 761214-235****
# 761214235****
또는
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)
주요 함수 설명
`for i in range(start, stop):`
- `start`부터 `stop - 1`까지의 숫자를 차례대로 `i`에 넣으면서 반복합니다.
- `for i in range(len(num_list) - 4, len(num_list)):`는 리스트의 마지막 4개 요소의 '위치(인덱스)'를 순회하라는 의미입니다.
range() 함수 문법 자세히 보기
1. `range(끝)`
- 0부터 끝-1까지의 숫자를 만듭니다.
- 예: range(5)는 0, 1, 2, 3, 4를 의미합니다.
2. `range(시작, 끝)`
- 시작부터 끝-1까지의 숫자를 만듭니다.
- 예: range(1, 6)은 1, 2, 3, 4, 5를 의미합니다.
3. `range(시작, 끝, 단계)`
- 시작부터 끝-1까지 단계만큼 건너뛰며 숫자를 만듭니다.
- 예: range(0, 10, 2)는 0, 2, 4, 6, 8을 의미합니다.
`'구분자'.join(리스트)`
- 리스트 안의 문자열들을 `구분자`로 연결하여 하나의 긴 문자열로 만듭니다.
- `''` (빈 문자열)을 구분자로 쓰면, 아무 구분 없이 모든 요소를 그대로 이어 붙입니다.
- 실무에서 여러 문자열 조각을 합칠 때 가장 효율적이고 표준적인 방법입니다.
`join`은 리스트 안의 문자열들을 합칠 때 사용하며, 앞에 어떤 문자열을 두느냐에 따라 결과가 달라집니다.
주요 함수 추가 예시(range())
1. `range(끝)`: 0부터 '끝 - 1'까지
가장 기본적인 형태로, 0부터 시작해서 특정 횟수만큼 반복할 때 사용합니다.
# 0부터 4까지 5번 반복
# 출력:
# 0
# 1
# 2
# 3
# 4
def ZeroToNum(num):
for i in range(num+1):
print(i)
ZeroToNum(4)
2. `range(시작, 끝)`: '시작'부터 '끝 - 1'까지
시작점을 0이 아닌 다른 숫자로 지정하고 싶을 때 사용합니다.
```python
# 1부터 5까지의 합 구하기
출력: 15
```
def SumFunc(num):
total = 0
for i in range(num+1):
total += i
return total
print(SumFunc(5))
3. `range(시작, 끝, 단계)`: '시작'부터 '끝 - 1'까지 '단계'만큼 건너뛰며
짝수만, 홀수만, 또는 N의 배수만 처리하고 싶을 때 유용합니다.
# 0부터 10까지 짝수만 출력
# 5부터 1까지 거꾸로 세기
def print_even_numbers(max_num):
for i in range(max_num+1):
if(i %2 ==0):
print(i)
def print_reverse(from_num):
# from_num 부터 1까지 -1 단계로 거꾸로 센다
for i in range(from_num,0,-1):
print(i)
print_even_numbers(10)
print("==========================")
print_reverse(5)
reverse()는 리스트 자체를 뒤집는 특별한 기능(메서드)이다.
- reverse()는 list라는 클래스(설계도)에 바로 사용하는 것이 아니라, my_list처럼 이미 만들어진 실제 리스트 객체에 사용해야
합니다. (예: my_list.reverse())
range(시작, 끝, 단계)에서 단계에 -1을 주면 숫자를 거꾸로 세어줍니다.
1. 빈 문자열 `''`로 합치기
리스트의 요소들을 아무런 구분자 없이 그대로 이어 붙입니다.
chars = ['p', 'y', 't', 'h', 'o', 'n']
# 출력: "python"
chars = ['p', 'y', 't', 'h', 'o', 'n']
print(''.join(chars))
2. 공백 `' '`으로 합치기
단어 리스트를 하나의 문장으로 만들 때 흔히 사용합니다.
words = ['Hello', 'World', 'This', 'is', 'Python']
# 출력: "Hello World This is Python"
print(' '.join(words))
3. 쉼표+공백 `', '`으로 합치기
CSV(Comma-Separated Values) 형태나 사람이 읽기 좋은 목록을 만들 때 사용합니다.
items = ['사과', '바나나', '오렌지']
# 출력: "사과, 바나나, 오렌지"
print(' , '.join(items))
4. 다른 기호 `'-'`로 합치기
전화번호나 날짜처럼 특정 형식의 문자열을 만들 때 유용합니다.
phone_parts = ['010', '1234', '5678']
# 출력: "010-1234-5678"
print('-'.join(phone_parts))
5. ※ 주의: `join`은 **문자열 리스트**에만 사용할 수 있습니다. 숫자 리스트를 합치려면 먼저 각 숫자를 문자열로 변환해야 합니다.
numbers= [1, 2, 3, 4, 5]
# 출력: "12345"
number_str = [str(n) for n in numbers]
print(''.join(number_str))
'Python > Python : Code Study' 카테고리의 다른 글
| [점프 투 파이썬] 05-5 내장함수 map(f, iterable) (0) | 2025.09.17 |
|---|---|
| 팰린드롬 (0) | 2025.09.16 |
| 자릿수 합 구하기 (0) | 2025.09.15 |
| PYTHONPATH 환경 변수 (0) | 2025.09.14 |
| if __name__ == "__main__" 정리 (0) | 2025.09.12 |