[알고리즘] 정렬(1)
·
PS
정렬은 n개의 원소를 순서대로 배열하는 것으로 프로그래밍을 할 때 많이 사용되는 알고리즘 중 하나이다. 데이터가 정렬되어 있으면 검색, 비교, 분석이 훨씬 쉬워지는 등 이점이 있다. 정렬 알고리즘에는 다양한 종류가 있으며 이번 포스트에서 대표적인 정렬 알고리즘인 선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬에 대해 알아보려한다. 1. 선택 정렬 (Selection Sort) 선택 정렬은 가장 간단한 정렬 알고리즘 중 하나이다. 배열에서 최솟값을 찾아 선택하여 배열의 첫 번째 원소와 교체하고, 그 다음 최솟값을 찾아 두 번째 원소와 교체한다. 이를 배열 전체를 순회하며 수행하면 정렬된 배열이 완성된다. 배열에서 최솟값을 찾아 선택하는 과정 때문에 이름이 선택 정렬인 것 같다. 이를 파이썬 코드..
[프로그래머스] 덧칠하기
·
PS/프로그래머스
링크 문제 설명 def solution(n: int, m: int, section: list) -> int: ... n은 벽의 길이, m은 롤러의길이, section은 칠해야할 구역의 번호가 담긴 리스트를 나타낸다. 롤러를 덧칠하기 위한 최소 횟수를 구하는 문제이다. 제한사항 1 ≤ m ≤ n ≤ 100,000 1 ≤ section의 길이 ≤ n 1 ≤ section의 원소 ≤ n section의 원소는 페인트를 다시 칠해야 하는 구역의 번호입니다. section에서 같은 원소가 두 번 이상 나타나지 않습니다. section의 원소는 오름차순으로 정렬되어 있습니다. 풀이 빈 벽을 만나면 롤러로 m만큼 색칠해나간다고 생각하면 된다. 즉 section을 순회하며 색칠을 시작한 벽의 번호 + m - 1보다 큰..
로컬 개발환경에서 https 사용
·
개발
ubuntu에서 웹 개발 시 localhost를 https로 접속할 수 있게 하는 방법을 정리했다.mkcert 설치링크의 os별 설치법 참고필요 패키지 설치$ sudo apt install libnss3-toolsmkcert 설치$ curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"$ chmod +x mkcert-v*-linux-amd64$ sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert로컬 CA에 mkcert 추가$ mkcert -install그러면 로컬 인증 기관(CA)이 생성됩니다. mkcert 생성 로컬 CA는 기기에서 로컬로만 신뢰할 수 있습니다.인증서 생성인증서를 생성할 디렉터리로 이동 ..
[Python] Dependency Injector (1)
·
Language/Python
의존성 주입 패턴(Dependency Injection Pattern)은 일반적으로 객체 생성 시, 해당 객체가 의존하는 다른 객체를 직접 생성하는 것이 아니라 외부에서 주입받도록 하는 방법이다. 이를 통해 객체 간의 결합도가 낮아지기 때문에, 유지보수 및 코드 재사용성이 높일 수 있다. Dependency Injector는 Python에서 의존성 주입 패턴을 구현할 수 있게 도와주는 라이브러리 중 하나이다. 이를 사용해 객체 간의 결합도를 낮추고, 코드의 유연성과 확장성을 높일 수 있다. 처음에는 이런 개념이 잘 와닿지 않았다. 이러한 Dependency Injector의 개념과 기능들을 코드 예시와 함께 설명하면 좀 더 쉽게 이해할 수 있다. class Database: def __init__(sel..
[프로그래머스] 카드뭉치
·
PS/프로그래머스
카드뭉치 문제 설명 def solution(cards1: List[str], cards2: List[str], goal: List[str]) -> str: ... 영단어로 이루어진 두 배열 cards1과 cards2 를 번갈아가며 연속된 카드를 뽑아 goal 을 만들 수 있는지 여부를 반환하면 된다. 제한사항 1 ≤ cards1의 길이, cards2의 길이 ≤ 10 1 ≤ cards1[i]의 길이, cards2[i]의 길이 ≤ 10 cards1과 cards2에는 서로 다른 단어만 존재합니다. 2 ≤ goal의 길이 ≤ cards1의 길이 + cards2의 길이 1 ≤ goal[i]의 길이 ≤ 10 goal의 원소는 cards1과 cards2의 원소들로만 이루어져 있습니다. cards1, cards2, g..
[프로그래머스] 인사고과
·
PS/프로그래머스
프로그래머스 - 인사고과 문제설명 def solution(scores: List[List[int]]) -> int: ... scores result [[2,2],[1,4],[3,2],[3,2],[2,1]] 4 사원들의 태도 점수와 평가 점수가 [[2,2],[1,4],[3,2],[3,2],[2,1]] 처럼 한 쌍의 정수로 이루어진 배열로 입력된다. 임의의 사원보다 두 점수가 모두 낮은 경우가 있으면 그 사원은 제외된다. 사원들의 총점을 순서대로 나열할 때 scores[0]인 사원의 석차를 구하는 문제이다. 제한사항 1 ≤ scores의 길이 ≤ 100,000 scores의 각 행은 한 사원의 근무 태도 점수와 동료 평가 점수를 나타내며 [a, b] 형태입니다. scores[0]은 완호의 점수입니다. 0 ≤..
[프로그래머스] 시소 짝궁
·
PS/프로그래머스
코딩테스트 연습 - 시소 짝궁 문제 설명 def solution(weights: List[int]) -> int: ... 2(m), 3(m), 4(m) 거리의 지점에 좌석이 있는 시소가 평형이 되는 쌍의 갯수를 구하는 문제이다. solution 함수의 인자에 사람들의 몸무게 목록이 주어진다. 제한사항 2 ≤ weights의 길이 ≤ 100,000 100 ≤ weights[i] ≤ 1,000 몸무게 단위는 N(뉴턴)으로 주어집니다. 몸무게는 모두 정수입니다. 풀이 시소가 평형을 이루는지 확인하려면 두 사람의 무게와 각 좌석의 거리의 곱이 같은지 확인하면 된다. 이를 응용해서 몸무게1 / 몸무게2 == 거리2 / 거리1로 비율을 확인하면 된다. 문제에서 주어진 좌석의 거리는 2, 3, 4이다. 입력으로 주어..
[NUXT] loading component
·
Language/NUXT
페이지를 불러오거나 서버 요청을 보낼 때 대기 시간이 발생한다. 이 때 화면이 정지해있으면 사용자는 페이지가 정지한 것인지 동작중인지 알 수 없다. 로딩 페이지를 표시해 작업이 진행중이라는 것을 표시해줘야한다. NUXT에서는 간단하게 로딩창을 만들 수 있다. 먼저 로딩을 표시하기 위한 컴포넌트를 작성한다. // @/components/loading.vue Loading... // @/components/loading.vue nuxt.config.js을 열고 loading 속성에 작성했던 loading.vue 컴포넌트를 추가한다. // nuxt.config.js export default { // ... loading: '@/components/loading.vue' } 필요한 부분에서 $n..