✏️ STUDY 45

[Python 기초] 문제 9. 주민등록번호 가리기

[ 문제 ] 주민등록번호의 마지막 네 자리만 가려 주는 보안 프로그램을 만들려고 한다. mask_security_number라는 함수를 정의하려고 하는데, 이 함수는 파라미터로 문자열 security_number를 받고, security_number의 마지막 네 글자를 '*'로 대체한 새 문자열을 리턴한다. [보충 설명] 문자열은 수정이 불가능하다. 하지만 문자열과 유사한 리스트는 수정이 가능하다. 더 쉬운 방법은 '문자열 슬라이싱'을 이용하는 것이다. [ 정답 코드 ] def mask_security_number(security_number): return security_number[:-4] + '****' # 테스트 print(mask_security_number("880720-1234567")) ..

[Python 기초] 문제 8. 자릿수 합 구하기

[ 문제 ] 함수 sum_digit은 파라미터로 정수형 num을 받고, num의 각 자릿수를 더한 값을 리턴합니다. sum_digit 함수를 작성하고, sum_digit(1)부터 sum_digit(1000)까지의 합을 구해서 출력하세요. [보충 설명] sum_digit 함수를 정의하기 위해서는 정수형 num을 문자열로 바꾼다. 문자열은 리스트와 유사하다는 점을 이용하여, 반복적으로 각 자릿수를 받는다. 각 자릿수를 정수형으로 변환하고, 각 자릿수를 total에 더한다. [ 정답 코드 ] # 자리수 합 리턴 def sum_digit(num): total = 0 str_num = str(num) for digit in str_num: total += int(digit) return total # sum_di..

[Python 기초] 문제 7. 투표 집계하기

[ 문제 ] 파이썬 리스트 votes에는 성북구민들의 투표 결과가 저장되어 있습니다. 리스트 votes의 정보를 토대로, 사전 vote_counter에 후보별 득표수를 정리하는 것이 목표입니다. [보충 설명] for문을 이용해서 votes에 있는 후보 이름을 순서대로 name이라는 변수에 지정한다. name을 vote_counter 사전에 반영한다. [ 정답 코드 ] # 투표 결과 리스트 votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \ '최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \ '강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기'..

[Python 기초] 문제 6. 리스트 뒤집기

[ 문제 ] 리스트 원소들의 순서를 거꾸로 뒤집으려고 합니다. numbers라는 리스트가 주어졌을 때, for문을 사용하여 리스트를 거꾸로 뒤집어 보세요. [보충 설명] 리스트를 뒤집기 위해서는, 서로 대칭인 원소들의 위치를 바꿔야(swap) 한다. 인덱스 0과 대칭되는 위치는 인덱스 len(numbers) - 1이다. 리스트 길이의 반을 넘게 돌면, 잘 바꿔 놨던 위치를 다시 원상 복구하는 셈이다. [ 정답 코드 ] numbers = [2, 3, 5, 7, 11, 13, 17, 19] # 리스트 뒤집기 for left in range(len(numbers) // 2): # 인덱스 left와 대칭인 인덱스 right 계산 right = len(numbers) - left - 1 # 위치 바꾸기 numbe..

[Python 기초] 문제 5. 피타고라스 삼조

[ 문제 ] 피타고라스 삼조란, 피타고라스 정리를 만족하는 세 자연수 쌍 (a, b, c)입니다. a < b < c라고 가정할 때, a + b + c = 400을 만족하는 피타고라스 삼조 (a, b, c)는 단 하나인데요. 이 경우, a * b * c는 얼마인가요? [보충 설명] 효율적인 코드를 짜기 위해 for 문을 두 개만 쓴다. 'a + b + c = 400'은 'c = 400 - a - b'라는 뜻이다. [ 정답 코드 ] for a in range(1, 400): for b in range(1, 400): c = 400 - b - a if a * a + b * b == c * c and a < b < c: print(a * b * c)

[Python 기초] 문제 4. 환전 서비스

[ 문제 ] 제가 구매하고 싶은 물건들의 가격을 리스트에 정리해 놨습니다. prices = [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000] 가격의 단위는 모두 원화(₩)인데요. 이 물건들의 가격을 미국 달러($)로 하면 얼마일지, 그리고 일본 엔화(¥)로 하면 얼마일지 확인해 보려고 합니다. 참고로 환율은 1달러에 1,000원, 그리고 1,000엔에 8달러라고 가정합니다. [ 정답 코드 ] # 원화(₩)에서 달러($)로 변환하는 함수 def krw_to_usd(krw): return krw / 1000 # 달러($)에서 엔화(¥)로 변환하는 함수 def usd_to_jpy(usd): return usd / 8 * 1000 # 원화(₩)으로 각각 얼마인가요? p..

[Python 기초] 6. 사전

1. 사전 key-value pair (키-값 쌍) 추가하기 : my_dictionary[키] = 값 리스트 인덱스는 무조건 정수, 사전의 키는 반드시 정수일 필요 없다. 따옴표 안에 넣으면 문자도 가능하다. # 사전 만들기 my_dictionary = { 5: 25, 2: 4, 3: 9 } print(my_dictionary[3]) # 출력값: 9 2. 사전 활용법 값이 있는 지 확인 : print(25 in my_dictionary.values()) # 출력값: True 키가 있는 지 확인 : print(my_dictionary.keys()) 반복문에 넣기 : for key in my_dictionary.keys(): print(key) 둘 다 확인하기 : for key, value in my_dic..

[Python 기초] 5. For 반복문

1. For 반복문 어떤 반복가능한 객체들을 순차적으로 처리할 때 유용 반복횟수를 예측하기 힘들고, 무한 반복문을 사용하는 경우에는 while 반복문이 유용 my_list = [2, 3, 5, 7, 11] for number in my_list: print(number) # 출력값: 2 / 3 / 5 / 7 / 11 2. Range 함수 파라미터 2개 버전: for i in range(start, stop) # start부터 stop-1까지의 범위 파라미터 1개 버전: for i in range(stop) # 0부터 stop-1까지의 범위 파라미터 3개 버전: for i in range(start, stop, step) # start부터 stop-1까지의 범위, 간격 step 장점: 간편함 / 깔끔함 /..

[Python 기초] 4. 리스트

1. 리스트 numbers = [2, 3, 5, 7, 11, 13] names = ["윤수", "혜린", "태호", "영훈"] 인덱싱 : print(name[0]) # 출력값: 윤수 마이너스 인덱싱 : print(numbers[-1]) # 출력값: 13 리스트 슬라이싱 : 리스트를 자르는 것 print(numbers[0:4]) # 출력값: [2, 3, 5, 7] # 0부터 3까지 출력 print(numbers[:3]) # 출력값: [2, 3, 5] # 2까지만 출력 리스트 바꾸기 numbers[0] = 7 print(numbers[0]) # 출력값: 7 2. 리스트 함수 numbers = [] len(numbers) # 리스트에 값이 몇 개가 있는지 numbers.append(값) # 리스트에 인덱스 추..

[Python 기초] 문제 3. 거스름돈 계산기

[ 문제 ] '가장 적은 수'의 지폐를 거슬러 주는 거스름돈 계산 프로그램을 만들려고 합니다. 우리는 calculate_change라는 함수를 작성하려고 하는데요. 이 함수는 지불한 금액을 나타내는 payment와 물건의 가격을 나타내는 cost를 파라미터로 받습니다. [ 정답 코드 ] def calculate_change(payment, cost): change = payment - cost # 거스름돈 총액 fifty_count = change // 50000 # 50,000원 지폐 ten_count = (change % 50000) // 10000 # 10,000원 지폐 five_count = (change % 10000) // 5000 # 5,000원 지폐 one_count = (change % ..