본문 바로가기
반응형

● 알고리즘, 자료구조/2021 알고리즘43

펠린드롬 | 함수, 리스트, 문자열 주어진 코드 def is_palindrome(word): # 테스트 print(is_palindrome("racecar")) print(is_palindrome("stars")) print(is_palindrome("토마토")) print(is_palindrome("kayak")) print(is_palindrome("hello")) 내가 푼 문제1 def is_palindrome(word): list_word = list(word) reverse_word = list(word) # list 변환 reverse_word.reverse() # 거꾸로 변환 return list_word == reverse_word 내가 푼 문제2 def is_palindrome(word): word = list(word) .. 2021. 5. 31.
주민번호 가리기 | 함수, 리스트, 문자열 문제 : 주민번호에서 맨 뒷자리 4개만 *로 수정한다. 기본 코드 def mask_security_number(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")) 시행 착오 1 : 별표 변환이 이상하다. 무엇이 문제일까? def ma.. 2021. 5. 31.
피타고라스 | for 반복문 a * b * c의 값은? 31875000 내가 푼 정답 1차 for a in range(1, 1000) : for b in range(a, 1000) : if a * a + b * b == (1000-a-b) * (1000-a-b) : print(a*b*(1000-a-b)) break 내가 푼 정답 2차 # c > b > a 니까, c는 b의 최대치, b는 a의 최대치 for c in range(1,1000) : for b in range(1, c) : # c는 b의 최대치 for a in range(1, b) : # b는 a의 최대치 if a * a + b * b == c * c : if a + b + c == 1000 : print(a * b * c) break 모법 답안 for a in range.. 2021. 5. 31.
자릿수 합 구하기 | 함수, 반복문, 리스트와 스트링 타입의 특징 활용 내가 푼 정답 # 자리수 합 리턴 def sum_digit(num): int_num = 0 str_num = str(num) # 문자열로 변환 for i in range(len(str_num)) : # 길이 만큼 반복 int_num += int(str_num[i]) return int_num # sum_digit(1)부터 sum_digit(1000)까지의 합 구하기 num = 1 sum_num = 0 while num 2021. 5. 31.
투표 집계하기 : 사전, 리스트 다음 코드에서 오류가 발생하는 이유는? # 투표 결과 리스트 votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \ '최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \ '강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자'] # 후보별 득표수 사전 vote_counter = {} # 리스트값 하나씩 가져옴 for name in votes: if vote_counter[name] == vote_counter[name] : vote_counter[name] += 1 # 이름(키)의 값에 1추가 # 후보별 득표수 출력 print(vote_c.. 2021. 5. 31.
배열과 리스트의 차이 배열 리스트 같은 자료형을 가진 변수를 하나로 나타낸 것 생성시 [ ] 사용 인덱스로 값에 대한 식별을 함 인덱스를 사용하여 요소 접근 가능 즉, 인덱스로 몇 번째 데이터 정도만 알 수 있음 인덱스로 값에 대한 식별은 못함. 그 이유는 각 요소들이 메모리상에 흩어진 경우가 인덱스를 사용할 수 없기 때문 생성시 데이터 크기가 정해짐 정적인 데이터 크기 동적인 데이터 크기 연속적인 메모리 공간 연속된 메모리 공간으로 이루어져 있으므로 메모리 관리 용이함 연속적이거나 아닌 메모리 공간 : 불연속적인 메모리 공간 배열의 모든 요소들은 동일 사이즈 지님 데이터 삭제시, 해당 공간이 남음 (연속된 배열 때문) 빈틈없는 적재 메모리 상의 연속적인 위치에 요소들 배치 순서있는 데이터의 모임 추가적인 삽입 삭제 X 포인.. 2021. 5. 29.
리스트 함수를 활용하여 차례대로 수정하기 막힌 상황 : 3번째 출력에서 홀수 7이 들어있다. # 빈 리스트 만들기 numbers = [] print(numbers) # numbers에 값들 추가 numbers = [1, 7, 3, 6, 5, 2, 13, 14] print(numbers) # numbers에서 홀수 제거 index = 0 while index < len(numbers) : if numbers[index] % 2 != 0 : # 홀수라면 del numbers[index] index += 1 print(numbers) # 출력 결과물에 유일하게 홀수 7이 들어있다. [7, 6, 2, 14] # numbers의 인덱스 0 자리에 20이라는 값 삽입 numbers.insert(0, 20) print(numbers) # numbers를 정.. 2021. 5. 28.
한화, 달러, 엔화 문제 : 함수, 반복문 출력결과물 한국 화폐: [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000] 미국 화폐: [34.0, 13.0, 5.0, 21.0, 1.0, 2.0, 8.0, 3.0] 일본 화폐: [4250.0, 1625.0, 625.0, 2625.0, 125.0, 250.0, 1000.0, 375.0] 내가 푼 정답 # 원화(₩)에서 달러($)로 변환하는 함수 def krw_to_usd(krw): return krw * 0.001 # 1000원은 1달러 # 달러($)에서 엔화(¥)로 변환하는 함수 def usd_to_jpy(usd): return usd * 125 # 1달러는 125엔화 # 원화(₩)으로 각각 얼마인가요? prices = [34000, 13000, 5000, 21.. 2021. 5. 28.
온도 단위 바꾸기 문제. def, while 내가 푼 답안1 (함수에 모조리 넣기) # 화씨 온도에서 섭씨 온도로 바꿔 주는 함수 def fahrenheit_to_celsius(fahrenheit): index = 0 new_list = [] while index < len(fahrenheit) : j = round((fahrenheit[index] - 32) * 5 / 9, 1) # 환산 후 소수점 반올림 new_list.append(j) # 빈리스트에 추가 index += 1 return new_list # 새 리스트 반환 temperature_list = [40, 15, 32, 64, -4, 11] print("화씨 온도 리스트: " + str(temperature_list)) print("섭씨 온도 리스트: {}".format(fahrenh.. 2021. 5. 28.
while문으로 구구단만들기 왜 1 * 1 = 1, 2 * 2 = 4, ... 순으로 출력되는건가? num = 1 while num 2021. 5. 27.
피보나치 50개항 출력 내코드 previous = 0 current = 1 num = 1 while num 2021. 5. 27.
우승상금 이자율과 은마아파트 비교 | while, if 원하는 출력 결과 94193324원 차이로 동일 아저씨 말씀이 맞습니다. 내가 푼 정답 # 상수, 변수명 달리 했어야 # {0:.0f} 대신 format에서 int 활용하는 방법도 있음 # 2016년 포함인지 아닌지 확인 price_money = 50000000 bank_rate = 0.12 past_year = 1989 now_year = 2016 apartment = 1100000000 while past_year apartment : print("{0:.0f}원 차이로 동일 아저씨 말씀이 맞습니다.".format(price_money - apartment)) else : print("{0:.0f}원 차이로 미란 아주머니 말씀이 맞습니다.".format(apartment - price_money)) .. 2021. 5. 27.
120의 약수와 갯수 출력 출력 결과물 1 2 3 4 5 6 8 10 12 15 20 24 30 40 60 120 120의 약수는 총 16개입니다. 내가 푼 답안인데 틀림 이유가 뭘까? num = 1 count = 0 while num 2021. 5. 27.
1000이하, 2와 3의배수 총합 : 변수 위치 고려 내가 푼 방식1 num = 1 two = 0 three = 0 while num < 1000 : if num % 2 == 0 : # 2의 배수 two = two + num elif num % 3 == 0 : # 3의 배수 three = three + num num += 1 print (two + three) 내가 푼 방식2 num = 1 sum_num = 0 while num < 1000 : if num % 2 == 0 : sum_num += num elif num % 3 == 0 : sum_num += num num += 1 print(sum_num) 모범 답안 : or를 쓰면 되는구나 i = 1 total = 0 while i < 1000: if i % 2 == 0 or i % 3 == 0: tota.. 2021. 5. 27.
100이하, 8의 배수이지만 12의 배수가 아닌 것 i = 1 while i 2021. 5. 27.
while 문, 23의 배수 | 조건문 쓰지 말 것 while 조건 : 수행식 에서 '조건'이 True일 동안 반복됨 내가 푼 식 i = 100 while i % 23 != 0 : # 100이상의 자연수 중 23의 첫번째 배수 i += 1 print(i) # 실행결과 115 i % 23 != 0 이란 조건을 풀어서 말하면 i가 23의 배수가 아니라면 계속 반복한다는 의미. 하지만 i가 115일 때는 23의 배수이므로 i += 1을 수행하지 않고 115에서 멈춤 모범 답안 i = 100 while i % 23 == 0 : # 100이상의 자연수 중 23의 첫번째 배수 i += 1 print(i) # 실행결과 100 2021. 5. 27.
코드잇 : 거스름돈 계산기 | 함수, 기본 연산 주어진 기본 코드 def calculate_change(payment, cost): # 코드를 작성하세요. # 테스트 calculate_change(100000, 33000) print() calculate_change(500000, 378000) 내가 푼 코드 def calculate_change(payment, cost): # 코드를 작성하세요. fifty_thousand = 50000 ten_thousand = 10000 five_thousand = 5000 one_thousand = 1000 rest = payment - cost # 나머지금액 fifty_thousand_rest = rest // fifty_thousand ten_thousand_rest = (rest % fifty_thousan.. 2021. 5. 27.
함수에서 print, return의 차이는? 1. print - print의 역할은 출력이지 반환(return)이 아님 - return문이 정의되지 않은 함수 내부에는 마지막에 return None 이 있다고 가정하고 None 타입을 반환. - None type 이므로 연산안됨 2. return 값을 반환(return)하여 결과값 출력됨 2021. 5. 24.
반응형