Python 15

[LeetCode/Python] 35. Search Insert Position

35. Search Insert Position[문제]정렬된 정수 배열 nums와 목표 값 target타겟이 배열에 존재하면 인덱스를 반환존재하지 않으면 정렬된 순서를 유지하면서 삽입될 위치를 반환해야 한다.[문제 조건]배열 nums는 오름차순으로 정렬되어 있다.배열의 길이는 0 배열의 원소는 -10^4 타겟 값은 -10^4 시간 복잡도는 O(log n)[코드 1]이진탐색 버전 (시간복잡도 O(log n) )def search_insert(nums, target): left, right = 0, len(nums) - 1 while left [코드 1 설명]이진 탐색 사용:left와 right로 배열의 양끝을 설정하고, 중간값 mid를 계산해가며 탐색.조건 비교:nums[mid] == targe..

[LeetCode/Python] 27. Remove Element

27. Remove Element [문제 설명]정수 배열 nums, 특정 값 val 이 주어지면, 정수 배열 내에 있는 요소들 중 val과 같은 요소를 제자리에서 삭제한다.삭제 후 남은 요소의 개수를 반환한다.[문제 조건]배열 nums에서 모든 val 값을 제자리에서(in-place) 삭제해야 한다.삭제 후에는 배열에 val과 같지 않은 요소들만 남아야 한다.정렬 순서가 바뀌어도 상관없다.배열의 첫 k개의 요소가 val과 같지 않은 값들로 채워져 있어야 한다.[코드]class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rt..

[Programmers/Python] 추억 점수

언어 : Python문제 제한 사항 1. 문제 분석사진 속 인물의 이름과 그리움 점수를 기반으로 각 사진의 추억 점수를 계산하는 문제주어진 데이터를 활용하여 각 사진별로 점수를 계산하고, 이를 순서대로 배열로 반환한다.2. 계산 로직name 과 yearning 배열을 매핑하여 딕셔너리를 생성한다각 photo[i] 의 이름이 딕셔너리에 있는 경우 해당 점수를 가져오고, 없는 경우 0으로 처리한다각 사진의 점수를 합산하여 결과 리스트에 저장한다3. 제한 사항 분석name 의 길이와 yearning 의 길이는 항상 동일하다name 에는 중복된 이름이 없으므로 딕셔너리로 변환하기 적합하다name 과 yearning 배열의 길이가 최대 100, photo 배열의 길이가 최대 100, 각 내부 배열의 길이가 최대 ..

[Programmers/Python] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지

0. 사용언어 : Python1. 문제 2. 문제 분석2-1. 문제각 퍼즐에는 난이도(diff)와 소요 시간(time)이 있으며, 숙련도(level)에 따라 퍼즐을 푸는 데 걸리는 시간이 달라진다.규칙 설명:- 현재 퍼즐의 난이도가 숙련도 이하일 경우(diff - 현재 퍼즐의 난이도가 숙련도보다 높을 경우(diff > level), 퍼즐을 여러 번 틀리게 된다- 이때 틀리는 횟수는 diff - level 이다.- 퍼즐을 틀릴 때마다, 퍼즐의 소요 시간(time_cur)과 이전 퍼즐의 소요 시간(time_prev)이 더해진 시간을 추가로 사용한다.- 마지막으로 틀리지 않고 퍼즐을 풀 때는 소요 시간(time_cur)만 더한다. 2-2. 제한사항퍼즐의 개수(n):최대 300,000개의 퍼즐이 주어질 수 있다..

[Python] 자료구조 (리스트, 튜플, 딕셔너리, 세트)

Python은 여러 가지 내장 자료구조를 제공해서 데이터 저장, 접근, 수정 등을 쉽게 할 수 있다. 주요 자료 구조는 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 가 있다1. 리스트(List)정의: 리스트는 순서가 있는 변경 가능한 데이터 구조로, 여러 요소를 저장할 수 있다생성 방법: 대괄호 [] 를 사용하거나 list() 함수를 사용한다특징:- 순서가 있어서 인덱스로 접근할 수 있다- 요소를 추가, 삭제, 수정할 수 있다사용 예시fruits = ["apple", "banana", "cherry"]fruits.append("orange") # 요소 추가fruits[1] = "blueberry" # 요소 수정 2. 튜플 (Tuple)정의: 튜플은 순서가 있는 변..

Python/기본 2024.11.09

[Python] lambda

lamda 함수람다 함수는 한 줄로 작성할 수 있는 익명 함수로, 간단한 기능을 즉석에서 정의할 때 유용하다.보통 코드의 일부분에서 잠깐 사용하는 용도로 적합하며, 이름 없이 사용할 수 있는 함수이다 lambda 함수의 기본 문법lambda 매개변수: 표현식 lambda 는 def 와 달리 함수 이름 없이 바로 정의한다.매개변수를 받고, 그 매개변수를 사용해 표현식을 계산해서 결과를 반환한다표현식은 한 줄이어야 하며, 계산된 결과가 반환된다예제 1기본 사용법add = lambda x, y: x + yprint(add(2, 3)) # 5 예제 2sorted() 와 lambda 함수의 사용sorted() 에서 key 매개변수와 함께 lambda 함수를 사용하여 정렬 기준을 지정할 수 있다# 예: 튜플의 두 ..

Python/기본 2024.11.09

[Python] enumerate

enumerate 함수enumerate 는 파이썬에서 반복 가능한 객체(리스트, 튜플 등)를 인덱스와 함께 반복할 수 있게 도와주는 내장 함수이다.보통 for 문과 함께 사용하며, 반복할 때마다 현재 인덱스와 요소를 동시에 가져올 수 있다 기본 문법for index, value in enumerate(iterable, start=0): # 반복문 내용iterable: 반복할 대상 객체 (예: 리스트, 문자열, 튜플 등)start: 인덱스 시작 값을 지정하는 매개변수로, 기본값은 0이다예제 1리스트 요소와 인덱스를 함께 출력하기fruits = ["apple", "banana", "cherry"]for index, fruit in enumerate(fruits): print(index, fruit..

Python/기본 2024.11.09

[Programmers/Python] 달리기 경주

1. 문제 2. 문제분석요구사항 파악:주어진 선수 목록에서 해설진이 부르는 선수(callings) 의 이름에 따라 그 선수가 자기 앞의 선수를 추월하게 해야한다-> callings 리스트를 순회하면서 선수들의 순서를 갱신하고, 최종 순위를 반환한다.시간 복잡도 문제 인식:callings 의 길이가 최대 1,000,000에 달하므로, 단순히 리스트에서 인덱스를 찾아 순서를 변경하는 방식은 O(n*m)의 시간 복잡도를 가지며 시간 초과가 발생할 가능성이 크다따라서, 선수의 위치를 빠르게 조회하고 갱신할 수 있는 방법을 찾아야 한다효율적인 자료구조:선수의 현재 위치를 빠르게 조회하고 수정할 수 있는 자료구조가 필요하다딕셔너리와 리스트를 조합해서 선수 이름을 기준으로 위치를 빠르게 찾고, callings 에 따..

[Python] sorted() 함수

sorted() 함수파이썬의 sorted() 함수는 이터러블 객체를 정렬하여 새로운 리스트로 반환하는 함수이다. sorted() 는 리스트뿐 아니라 튜플, 문자열 등 다양한 이터러블 객체에 사용할 수 있다. 이 함수는 원본 데이터의 순서를 변경하지 않고, 정렬된 새로운 리스트를 반환한다는 점이 특징이다. 기본 문법sorted(이터러블, key=None, reverse=False)이터러블: 정렬할 대상(리스트, 튜플, 문자열 등)key: 정렬 기준을 설정하는 함수로, 각 요소에 대해 적용할 함수를 지정한다reverse: 기본값은 False 이며, True 로 설정하면 내림차순으로 정렬된다sorted() 의 주요 옵션1. 기본 사용법기본적으로 sorted() 는 오름차순으로 정렬된 리스트를 반환한다numbe..

Python/기본 2024.11.09

[Python] 제너레이터 표현식

제너레이터 표현식제너레이터 표현식은 리스트 컴프리헨션과 유사한 문법을 가지지만, 결과를 리스트가 아닌 제너레이터 객체로 반환한다. 제너레이터는 필요한 값을 그때그때 하나씩 생성하므로, 메모리 효율성이 뛰어난 방법이다. 문법과 기본 사용법제너레이터 표현식은 리스트 컴프리헨션과 매우 비슷하지만, 대괄호 [] 대신 소괄호 () 를 사용한다(표현식 for 항목 in 반복 가능한 객체 if 조건) 예시 1:  제곱 값을 생성하는 제너레이터 표현식squares = (x**2 for x in range(1, 6))print(squares) # at 0x...>print(list(squares) # [1, 4, 9, 16, 25]squares 는 제너레이터 객체로, list() 를 사용하여 실제 값을 리스트로 변환해..

Python/기본 2024.11.09