코딩테스트 합격자 되기(파이썬 편)(4)
-
[프로그래머스] 두 개 뽑아서 더하기, 모의고사(python)
두 개 뽑아서 더하기, 모의고사(python) 문제 1. 두 개 뽑아서 더하기 풀이 def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(i+1, len(numbers)): answer.append(numbers[i] + numbers[j]) return sorted(set(answer)) #중복 제거. 오름차순 정렬. N은 배열 numbers의 길이. 시간복잡도는 모든 조합을 확인하기 위한 중첩 반복문에서 O(N^2), 이를 정렬하는 데에 O(N^2 log(N^2)) 최종 O(N^2 log(N^2)) 문제 2. 모의고사 풀이 def solution(answers): answer = [] # 시험이 최대 10000문..
2024.02.01 -
[코딩테스트] 리스트/덱(deque)
리스트/덱(deque) 이번 시간에는 리스트와 덱(deque, 데크)에 대해 정리해 보겠습니다. 저자님의 스터디 가이드를 참고했습니다. 배열에 대해서는 정리를 한번 했었는데요. 이번에는 리스트의 메서드와 시간복잡도에 대해 알아보겠습니다.배열 메서드append(item) - 리스트의 끝에 item을 추가 / 반환 값 없음.- 기존 원소에 영향을 주지 않기 때문에 시간복잡도 O(1) pop()- 리스트 맨 끝의 item을 삭제 / 반환 값은 삭제한 원소- 기존 원소에 영향을 주지 않기 때문에 시간복잡도 O(1) pop(0)- 리스트 맨 앞의 item을 삭제 / 반환 값은 삭제한 원소- 맨 앞의 원소를 삭제하면 모든 원소가 한 칸씩 앞으로 이동해야 하므로, 시간 복잡도 O(N), N은 리스트의 길이- 비효율적..
2024.01.29 -
[코딩테스트] 코드를 평가하는 방식, 시간 복잡도
코드를 평가하는 방식, 시간 복잡도 이번 시간에는 '배열 연산의 시간 복잡도와 자주 사용하는 기능'에 대해 알아보기 전에 시간 복잡도(Time Complexity)의 개념에 대해 먼저 알아보려고 합니다. 저자님의 스터디 가이드를 참고했습니다. 코딩 테스트 평가 방식코딩 테스트에서 코드를 평가하는 방식은 크게 두 가지입니다.1. 내가 작성한 코드의 결괏값이 테스트 케이스의 결괏값과 일치하는지 (정확성)2. 문제에서 요구하는 알고리즘 "성능"을 만족하는지 (효율성) 코딩 테스트의 문제들은 각각 '가장 효율적으로 해결하는 알고리즘'이 있다고 하는데요.이때 이 알고리즘의 성능을 측정하는 데 쓰이는 것이 시간복잡도입니다. 시간복잡도는 입력값과 연산 횟수의 상관관계에 따라 성능을 측정하는 것입니다. 예를 들어 1차..
2024.01.27 -
[코딩테스트] 배열
배열 '코딩 테스트 합격자 되기'의 첫 번째 챕터인 배열입니다. 배열 개념에 대해 간단히 정리해보겠습니다. 배열은 인덱스와 값이 일대일로 대응하는 자료구조입니다. 배열은 특정 위치(인덱스)에 있는 데이터에 바로 접근할 수 있습니다. 이를 임의 접근(random access)이라고 합니다. 인덱스는 0부터 시작합니다. #배열 생성 arr = [0, 0, 0, 0] arr = [0] * 4 arr = list(range(4)) # [0, 1, 2, 3] 리스트는 여러 가지 방법으로 생성할 수 있습니다. 대괄호를 사용하여 빈 리스트를 표시하기: [] 대괄호를 사용하여 쉼표로 항목 구분하기: [a], [a, b, c] 리스트 컴프리헨션 사용하기: [x for x in iterable] 형 생성자를 사용하기: l..
2024.01.24