728x90

분류 전체보기 97

[python] heapq: 힙이란? 파이썬에서 힙을 사용하고 싶을 때

먼저, 큐에 대해 다시 생각해보자 일반적인 큐는 FIFO 구조로 먼저 들어온 요소가 먼저 나가는 자료구조이다 우선순위 큐도 있다 우선순위 큐는 데이터들이 우선순위를 가지고 우선순위가 높은 요소가 먼저 나가는 자료구조이다 바로 이 우선순위 큐를 위한 자료구조가 힙이다 배열, 연결리스트, 힙 으로 구현이 가능한데 힙으로 구현하는 것이 O(log n)으로 구현하는 것이 가장 효율적이다(나머진 O(n)) 그럼 힙(heap)이란? 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조 완전 이진 트리이며, 시간복잡도는 O(log n)에 추가와 삭제가 가능하다 최대힙, 최소힙 2가지 종류가 있다 최대힙: 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 최소힙: 부모..

Backend/Python 2024.04.04

[python] deque: 파이썬에서 큐를 구현하고 싶을 때

deque는 파이썬에서 큐를 구현할 수 있는 모듈이다 deque를 사용하면 무엇이 좋을까? 속도가 리스트에 비해 빠르다 리스트 = O(n) deque = O(1) 큐작업이 굉장히 편해진다 deque는 링크드리스트 로 구현되어 있기 때문에 리스트를 이용한 스택을 이용하는 것보다 빠르기 때문에 사용하기 좋다 deque의 간단한 사용법을 알아보자면 아래와 같이 import 해서 사용할 수 있다 from collections import deque append: 오른쪽 끝에 원소 추가 appendleft: 왼쪽 끝에 원소 추가 pop: 오른쪽 끝에 원소 제거 후 반환 popleft: 왼쪽 끝에 원소 제거 후 반환 maxlen: 큐의 길이 반환 rotate: 큐를 회전 rotate(num): num이 양수일 경우..

Backend/Python 2024.04.03

[python] 리스트 컴프리헨션(List Comprehension) : 반복문과 조건문 줄이고 싶을 때

리스트 컴프리헨션이란? 파이썬에서 간결하게 반복문과 조건문을 줄이는 것! 아래와 같이 사용한다 list = [ 요소에 연산 수행 for interable의 개별 요소 in iterable if 조건] iterable : 반복 가능한 객체 반복문 사용 예시 1에서 10까지 2를 곱한 리스트 생성하는 예시 a_list = [ i*2 for i in range(1,11) ] print(a_list) #[2,4,6,8,10,12,14,16,18,20] 조건문 사용 예시 1에서 10까지 중 홀수만 수 출력 예시 odd = [i for i in range(1, 11) if i % 2 == 1] print(odd) #[1, 3, 5, 7, 9] 다음과 같이 리스트가 아닌 집합, 딕셔너리 형태로도 출력 가능하다 집합 ..

Backend/Python 2024.04.01

[백준 python] 백준 7785번 회사에 있는 사람

문제 상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다. 각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다. 상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "le..

[백준 python] 2675번 문자열 반복 파이썬

문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 입력 예시 2 3 ABC 5 /HTP 출력 예시 AAABBBCCC /..

Algorithm/구현 2024.03.27

[Web] CSR(클라이언트사이드랜더링), SSR(서버사이드랜더링)

개발자라면 한번정도 들어봤을 단어이자 면접 단골질문인 CSR과 SSR에 대해 자세히 알아보려한다.CSR(클라이언트 사이드 랜더링)과 SSR(서버 사이드 랜더링)은 반대에 있는 관계에 있어서 각 장단점이 명확하여 자신의 프로젝트에 상황에 맞게 구현하는 것이 중요하다  먼저, 랜더링이란 다음과 같다 https://yangwonjoon.tistory.com/69 [Web] 랜더링이란 무엇인가?개발자라면 한번정도 들어봤을 단어이자 면접 단골질문인 CSR과 SSR에 대해 자세히 알아보려한다. CSR(클라이언트 사이드 랜더링)과 SSR(서버 사이드 랜더링)을 알아보기 앞서 랜더링에 대해 자세yangwonjoon.tistory.com     CSR(클라이언트 사이드 랜더링)..

Web 2024.03.27

[Web] 랜더링이란 무엇인가?

개발자라면 한번정도 들어봤을 단어이자 면접 단골질문인 CSR과 SSR에 대해 자세히 알아보려한다.CSR(클라이언트 사이드 랜더링)과 SSR(서버 사이드 랜더링)을 알아보기 앞서 랜더링에 대해 자세히 알아보자:)    랜더링이란 무엇일까?랜더링이란 HTML, CSS, JS 등 개발자가 작성한 코드가 브라우저에 출력되는과정을 의미한다크롬은 블링크(blink) 등 각 브라우저는 랜더링을 수행하는 랜더링 엔진을 가지고 있다 사용자가 웹페이지에 접속하면 아래와 같은 랜더링 과정을 통해 다음과 같은 순서에 따라 랜더링이 이루어진다.DOM 트리, CSSOM 트리 생성랜더링 트리 생성레이아웃페인팅  조금 더 자세히 알아보자면 1.1) DOM 트리 생성먼저, HTML 코드가..

Web 2024.03.25

[HelloTarot (2)] img 태그 vs background-image 에 대한 고민

HelloTarot는 기존 타로 카드 게임과의 차이점은 보기 편한 UI와 역동적인 카드 애니메이션에 있다 그래서 이미지에 스타일링을 잘 활용해야하는데 이미지를 생성할때,img태그를 사용할지 background를 사용할지 고민이 되었고 어렴풋이 알고 있던 이 둘의 차이점을 명확히 구분하려한다먼저, 위에서 말했지만 이미지를 마크업하는 방법은 대표적으로 2가지가 있다  1) HTML 에서 태그를 사용2) CSS 의 background-img 속성을 사용(배경으로 처리) //img 태그 //css background-img.a { background-image: url(경로);} 그럼 어떤 상황에 뭐를 이용해야할까? 몇까지만 살펴보면 다음과 같다    태..

Project/HelloTarot 2024.03.22

[HelloTarot (1)] HelloTarot(타로게임) 기획하기

개발 기간을 2달 잡고 동기들과 프로젝트를 하기로 했다, 무엇을 할까 고민하다가 포켓몬 카드 사이트를 공유받았고 https://poke-holo.simey.me/#%E2%9A%93-top Pokémon Cards CSS Holographic EffectAn exploration of what's possible with CSS for Pokemon Cards, simeydotme (Simon Goellner)poke-holo.simey.me 이러한 요소들과 합쳐서 진부한 타로게임이 아닌 좀 화려하고 이쁜?타로게임을 만들어보기로했다  나는 프론트엔드 파트를 맡기로했고, 프론트 1, 백 1, 풀 1 으로 프로젝트를 진행하게 되었다항상 급급하게 react.js, sass 등 익..

Project/HelloTarot 2024.03.20

[js] &&와 || 의 활용법 : 단락회로평가

프로그래밍을 막 처음 배우기 시작하던 시절부터 많이 봤던 &&와 ||이다 전통적인 프로그래밍 관점에서 이 둘은 논리연산자로 AND와 OR을 의미한다 AND연산자는 2개의 값이 모두 참이면 true 반환하고 아니면 false, OR연산자는 2개의 값중 어느 한 값만 참이면 true 반환하고 아니면 false이다 AND연산자 console.log(true && true) //true console.log(true && false) //false console.log(false && false) //false OR연산자 console.log(true || false) //true console.log(true && false) //true console.log(false && false) //false 이렇게..

Frontend/JavaScript 2024.03.01
728x90