728x90
반응형
SMALL

2024/12 18

[Python] 스킬트리

✏️ 문제 문제 파악나는 skill_trees의 문자열들 중에 skill에 없는 문자가 있다면 replace로 없애고 난 후에 비교했는데 다른 분들은 그냥 제거 과정 없이 바로 비교해서 푸셔서 코드가 훨씬 간결하셨다..  코드def solution(skill, skill_trees): answer = 0 for i, skill_tree in enumerate(skill_trees): for s in skill_tree: if s not in skill: skill_tree = skill_tree.replace(s, '') skill_trees[i] = skill_tree for skill_tree in..

[Python] 더 맵게

✏️ 문제 문제 파악scoville 길이가 최대 1,000,000이기 때문에 배열을 반복문을 통해 돌면 당연히 시간복잡도에서 걸린다.  이때 이 문제는 힙을 사용하면 좋은데 이유는 최소값이나 최대값을 효율적으로 빠르게 추출해야 하고 힙 속성 덕분에 힙에 넣으면 자동으로 정렬이 되기 때문이다.배열은 특정 값을 찾을 때 최악의 경우 O(n)이라는 시간이 소요되고, 계속해서 정렬을 해줘야하는 반면힙은 최소값이나 최대값을 찾을 때 O(1)이라는 시간이 소요된다.  그래서 이러한 힙을 활용해서 문제를 풀면 쉽게 풀 수 있다.   코드import heapqdef solution(scoville, K): heapq.heapify(scoville) answer = 0 while len(scovi..

[Web] Webpack이란 무엇일까?

Webpack은 웹 애플리케이션 개발에서 자주 사용하는 모듈 번들러(module bundler)이다.자바스크립트, CSS, 이미지 등 다양한 파일을 의존성 그래프(dependency graph)로 관리하고 이를 하나 또는 여러 개의 번들(bundle) 파일로 묶어준다.이 과정을 통해 애플리케이션의 성능을 최적화하고, 배포를 쉽게 만들어주는 역할을 한다.쉽게 말해 주방의 요리사로 비유할 수 있다. 모듈 번들러에 대해 잘 모른다면? [Web] 모듈 번들러, 한 페이지로 끝내기모듈 번들러(Module Bundler)란?여러 개의 파일(모듈)을 하나의 파일(또는 몇 개의 파일)로 묶어주는 도구이다. 이를 통해 웹 애플리케이션을 실행하기 위해 필요한 모든 파일을 효율적으로 관리하mi-dairy.tistory.co..

Web 2024.12.14

[자료구조] 힙, heap 사용법

힙(Heap)은 트리 기반의 자료구조로 특정한 규칙(힙 속성)을 만족하는 이진 트리이다.힙은 동적으로 변하는 데이터에서 최댓값 또는 최솟값을 빠르게 찾고 관리하기 위해 생겨났으며 데이터 삽입 및 삭제 시 힙 속성을 유지하는 것이 핵심이다.이러한 힙 속성 덕분에 삽입, 삭제 시에도 효율적으로 동작하며 우선순위 큐와 같은 문제를 효과적으로 해결하기 위한 자료구조로 발전했다. 1. 힙의 특징힙은 배열로 구현 가능하여 메모리 효율적이지만 정렬된 상태로 데이터를 저장하지 않는다는 특징이 있다. 1.1 완전 이진 트리 (Complete Binary Tree)힙은 항상 완전 이진 트리 형태를 유지한다.마지막 레벨을 제외한 모든 레벨이 꽉 차 있어야 하며 마지막 레벨은 왼쪽부터 채워져야 한다. 1.2 힙 속성 (Hea..

알고리즘 2024.12.14

[Web] 모듈 번들러, 한 페이지로 끝내기

모듈 번들러(Module Bundler)란?여러 개의 파일(모듈)을 하나의 파일(또는 몇 개의 파일)로 묶어주는 도구이다. 이를 통해 웹 애플리케이션을 실행하기 위해 필요한 모든 파일을 효율적으로 관리하고 브라우저에서 실행 가능한 형태로 제공할 수 있으며 개발자는 복잡한 코드를 관리하고 성능 최적화된 웹 애플리케이션을 쉽게 배포할 수 있다.대표적인 모듈 번들러로는 Webpack, Parcel, Vite, Rollup 등이 있다. 비유를 하자면 웹 애플리케이션은 복잡한 재료(코드, 이미지, CSS)를 가진 요리와 같고 모듈 번들러는 요리를 만들기 위해 재료를 준비하고 최적화된 형태로 포장하는 주방 관리자로 비유할 수 있다.  1. 필요한 이유현대의 웹 애플리케이션은 규모가 커지고 복잡해지면서 여러 개의 ..

Web 2024.12.13

[Python] 뒤에 있는 큰 수 찾기

✏️ 문제 문제 파악처음엔 이중 for 반복문 사용했다가 numbers 길이가 1,000,000 까지라 시간복잡도에서 무조건 걸릴거라 예상했다..그래서 배열을 한바퀴 돌되 그 전에 있던 값들도 비교를 하려면 stack에 넣어서 안의 값을 계속 비교하며 처리해야 할 것 같아 stack을 사용했다. 아직 stack을 잘 사용할 줄 모르는 거 같아서 큰일이다.. ㅠ유사한 문제로는 주식가격이 있다. 코드실패 코드def solution(numbers): answer = [] for i in range(len(numbers)-1): for j in range(i+1, len(numbers)): if numbers[i] 성공 코드def solution(number..

[Web] CORS에 대해 알아보자

브라우저가 특정 보안 정책을 따르기 때문에 웹 페이지가 자신과 다른 출처에서 자원을 요청하려고 할 때 이를 허용하거나 차단할 수 있는 설정이 필요하다. CORS는 이런 상황에서 중요한 역할을 한다. 1. CORS (Cross-Origin Resource Sharing)정의웹 개발에서 다른 도메인(출처)간의 자원 공유를 제어하기 위한 보안 메커니즘, 마치 경비실에서 출입증 검사를 받는 것과 유사하다.동일 출처 정책의 제한을 풀기 위해 서버 측에서 제공하는 옵션동일 출처 정책(Same-Origin Policy) : 브라우저가 기본적으로 보안상의 이유로 브라우저는 기본적으로 다른 출처(도메인, 프로토콜, 포트 번호가 다름)에서 리소스를 요청을 차단하는 정책브라우저에 내장된 기본적인 보안 체계로 동작해 이를 바..

Web 2024.12.12

[Python] 롤케이크 자르기

✏️ 문제 문제 파악처음엔 배열[:]을 사용했다가 topping의 길이가 최대 1,000,000까지 되므로 당연히 시간초과가 떴고.. 그 후에 pop()도 사용했으나 매번 set(topping)처리하는 과정에서 시간 복잡도가 컸었다..  그래서 각 토핑의 개수를 센 딕셔너리를 만들고 나누는 경계선이 변하면서 해당 토핑의 종류의 개수를 수정해가며 토핑의 개수를 비교하는 방법으로 코드를 짰다.   코드실패 코드def solution(topping): answer = 0 length = len(topping) a = set() for i in range(length): value = topping.pop() a.add(value) ..

[Python] 모음 사전

✏️ 문제 문제 파악보자마자 dfs 재귀로 풀면 되겠다! 했는데 뭐 때문인 지 만든 문자열과 주어진 word가 같음에도 불구하고 리턴 값이 null로 나왔다 ㅠ 찾아보니 코드가 재귀이므로 if 만든 문자열 == word 에 해당되어도 return하면 상위 호출에 return한 값을 가져다주고 남은 반복문, 호출이 계속 진행되게 된다.그래서 값을 찾았더래도 남은 재귀 호출을 처리하는 과정에서 값이 null로 바뀌게 되어 결국 null이 출력되게 된다. ps. 목표 단어를 찾았더라도 다른 반복문에서 계속 탐색을 수행하게 되고 재귀 호출의 반환값이 상위 호출로 전달되지 않고 결국 None을 반환하게 된다. 이를 해결하기 위해서는 반환값이 부모 호출로 제대로 전달되도록 하기 위해, 재귀 호출에서 반환된 값을 ..

[Python] 타겟 넘버

✏️ 문제 문제 파악이 문제도 모든 경우의 수를 다 구하는 것 같아서 dfs를 활용해 풀었다. 이때 특징은 index가 0에서 len(number)-1가 될 때까지 다음의 값을더한다.뺀다.로 두 가지 경우가 있으므로 dfs도 두 가지로 나누어서 돌아야 한다.  코드def solution(numbers, target): answer = 0 def dfs(index, total): nonlocal answer if index == len(numbers): if total == target: answer += 1 return dfs(index + 1, total + numbe..

728x90
반응형
LIST