전체 글 139

[프로그래머스] #28 없는 숫자 더하기

▶ 문제0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어짐. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수 완성하기. ▶ 제한사항1 ≤ numbers 의 길이 ≤ 90 ≤ numbers 의 모든 원소 ≤ 9numbers 의 모든 원소는 서로 다름 ▶ 풀이def solution(numbers): return 45 - sum(numbers) 통과!

codekata 2024.07.26

[알고리즘] 선택 정렬, 삽입 정렬

정렬 알고리즘(Sorting Algorithms): 데이터를 특정 순서로 정렬하는 알고리즘 선택 정렬(Selection Sort): 배열의 가장 최소값(or최대값)을 선택해서 배열의 앞부분으로 이동시키는 방식.배열 전체에서 최소값(or최대값)을 찾음그 값을 배열의 맨 앞에 위치한 값이랑 교환맨 앞에 정렬된 애들을 제외하고, 위 두 과정 반복 ▶ 선택 정렬 구현 코드def selection_sort(arr): # 함수정의, 배열받기 n = len(arr) # n = 배열길이 for i in range(n): # i반복 : 0부터 ~ n-1까지 (i = 기준인덱스) min_idx = i ..

[알고리즘] 선택정렬, 삽입정렬코드

선택정렬def selection_sort(arr): # 함수정의, 배열받기 n = len(arr) # n = 배열길이 for i in range(n): # i반복 : 0부터 ~ n-1까지 (i = 기준인덱스) min_idx = i # 최소인덱스 = i로 지정해놓고 비교시작! for j in range(i + 1, n): # j반복 : i+1부터 ~ n-1까지 (j = 비교인덱스) # 엥? 근데 i=7일때는?? if arr[j] 최소인덱스값 swap해줌. # 결과 : 배열의 (앞에서 i개 제외..

[알고리즘] 피보나치 수열, 메모이제이션

피보나치 수열: 처음 두 항을 1과 1로 정하고, 그 다음 항부터는 앞의 두 개의 항을 더해 만드는 수열1 ,  1 ,  2 ,  3 ,  4 ,  5 ,  13 ,  21 ,  34 ,  55 ,  ·  ·  ·이 수열에 속한 수를 피보나치 수라고 한다.f(0) = 0 으로 시작하기도 함첫 번째 피보나치 수 f(1) = 1두 번째 피보나치 수 f(2) = 1세 번째 피보나치 수 f(3) = f(2) + f(1) = 2네 번째 피보나치 수 f(4) = f(3) + f(2) = 3n 번째 피보나치 수 f(n) = f(n-1) + f(n-2) ▶ n 번째 피보나치 수 구하는 코드 만들어보기def fibonacci(n): # 함수정의, 결과는 n번째 피보나치 수 if n == 1 o..

[프로그래머스] #27 핸드폰 번호 가리기 (문자열 연산)

▶ 문제프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가린다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *로 가린 문자열을 리턴하는 함수 solution을 완성해라 ▶ 제한조건phone_number는 길이 4 이상, 20 이하인 문자열 ▶ 풀이def solution(phone_number): num = len(phone_number)-4 return '*' * num, phone_number[-4:] # 실행한 결괏값 ["*******","4444"]이 기댓값 "*******4444"과 다릅니다틀림 왜 리스트 형태로 나온다고 하지? 그래서 파이참에서 실행해봤다.def solution..

codekata 2024.07.24

[프로그래머스] #26 음양 더하기 (zip 함수)

▶ 문제어떤 정수들이 있다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어진다. 실제 정수들의 합을 구하여 return 하도록 solution 함수 완성 ▶ 제한사항absolutes의 길이는 1이상 1,000 이하absolutes의 모든 수는 각각 1이상 1,000 이하signs의 길이는 absolutes의 길이와 같다signs[i]가 참이면 absolutes[i]의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미함 ▶ 풀이def solution(absolutes, signs): total = 0 for i in range(len(signs)): if signs[i]: ..

codekata 2024.07.23

[알고리즘] 재귀함수

재귀함수 : 자기자신을 다시 호출함재귀호출되면 그 전의 함수는 Stack에 쌓임.return을 만나면 본인이 호출되었던 위치로 되돌아감. ▶ print( )가 먼저, 재귀호출이 나중에 있을 때def recursive_func(n): # 함수선언, n 받아옴 if n == 0: # n = 0 이면 return # 함수 끝 else: # f(5)에서 n=5 이면 print(n, end=' ') # 5 프린트 하고 나서 # 5 recursive_func(n-1) # 재귀호출 f(4), 처음으로 돌아감 ..

[프로그래머스] #25 나누어떨어지는 숫자배열 (sorted(iterable)=[list])

▶ 문제array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수 solution 작성divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환 ▶ 제한사항arr은 자연수를 담은 배열정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j]divisor는 자연수array는 길이 1이상인 배열 ▶ 풀이def solution(arr, divisor): answer = [] for element in arr: if element % divisor == 0: answer.append(element) if answer: return sorted(answer) ..

codekata 2024.07.22

[프로그래머스] #24 서울에서 김서방 찾기

▶ 문제String 배열 Seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수 solution을 완성하기. seoul에 "Kim"은 오직 한번만 나타나며 잘못된 값이 입력되는 경우는 없음. ▶ 제한사항seoul은 길이 1 이상, 1000 이하인 배열seoul의 원소는 길이 1 이상, 20 이하인 문자열"Kim"은 반드시 seoul 안에 포함되어 있음 ▶ 풀이def solution(seoul): for i in seoul: if i == "Kim": answer = seoul.index(i) return f"김서방은 {answer}에 있다"통과index() 함수는 해당 요소의 인덱스를 찾아준다근데 이 함수..

codekata 2024.07.21