본문 바로가기

분류 전체보기

[프로그래머스] 연속된 부분 수열의 합 링크 문제 설명 def solution(sequence: List[int], k: int) -> List[int]: ... 주어진 비내림차순 배열 sequence에 대해 합이 k인 부분 배열 중 가장 길이가 짧은 구간을 구해 반환한다. 비내림차순 : 인접한 두 수가 같을 수도 있는 오름차순 sequence k result [1, 2, 3, 4, 5] 7 [2, 3] [1, 1, 1, 2, 3, 4, 5] 5 [6, 6] [2, 2, 2, 2, 2] 6 [0, 2] 제한사항 5 ≤ sequence의 길이 ≤ 1,000,000 1 ≤ sequence의 원소 ≤ 1,000 sequence는 비내림차순으로 정렬되어 있습니다. 5 ≤ k ≤ 1,000,000,000 k는 항상 sequence의 부분 수열로 만들 ..
[프로그래머스] 달리기 경주 링크 문제 설명 def solution(players: List[str], callings: List[str]) -> List[str]: ... callings는 players의 원소로만 이루어져 있다. callings의 원소를 players에서 찾아 i - 1 위치의 원소와 순서를 서로 바꿔준다. 모든 callings의 원소에 대해 순서를 바꿔준 결과를 반환하면 된다. 제한사항 5 ≤ players의 길이 ≤ 50,000 players[i]는 i번째 선수의 이름을 의미합니다. players의 원소들은 알파벳 소문자로만 이루어져 있습니다. players에는 중복된 값이 들어가 있지 않습니다. 3 ≤ players[i]의 길이 ≤ 10 2 ≤ callings의 길이 ≤ 1,000,000 callings는 ..
[딥러닝] MNIST MNIST는 손으로 쓴 숫자 이미지 데이터셋으로, 60,000개의 학습 데이터와 10,000개의 테스트 데이터로 이루어져 있다. 각 이미지는 28x28 픽셀 크기의 흑백 이미지(28x28x1)이며 0부터 9까지의 정수 레이블을 가진다. 텐서플로의 패키지에 포함되어 있기 바로 사용할 수 있다. from tensorflow.keras.datasets import mnist (X_train, y_train), (X_test, y_test) = mnist.load_data() 아래 코드를 실행하면 실제 데이터를 확인해볼 수 있다. import matplotlib.pyplot as plt plt.figure(figsize = (20, 4)) for idx in range(5): label = y_train[idx..
[Python] pandas 판다스는 파이썬에서 데이터 처리를 위해 사용하는 라이브러리이다. 일반적으로 행과 열로 구성된 2차원 데이터를 다룬다. DataFrame은 여러 개의 행과 열로 이루어진 2차원 데이터를 담는 데이터 구조체이다. 데이터셋은 kaggle의 Titanic - Machine Learning from Disaster의 데이터셋 중 train.csv 파일을 사용했다. import pandas as pd pandas 모듈을 pd라는 이름으로 가져온다. df = pd.read_csv("train.csv") train.csv 파일을 읽어 Dataframe으로 로딩한다. df.head() 데이터의 일부를 직접 확인할 수 있다. df.info() RangeIndex: 891 entries, 0 to 890 Data colum..
[알고리즘] 정렬(1) 정렬은 n개의 원소를 순서대로 배열하는 것으로 프로그래밍을 할 때 많이 사용되는 알고리즘 중 하나이다. 데이터가 정렬되어 있으면 검색, 비교, 분석이 훨씬 쉬워지는 등 이점이 있다. 정렬 알고리즘에는 다양한 종류가 있으며 이번 포스트에서 대표적인 정렬 알고리즘인 선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬에 대해 알아보려한다. 1. 선택 정렬 (Selection Sort) 선택 정렬은 가장 간단한 정렬 알고리즘 중 하나이다. 배열에서 최솟값을 찾아 선택하여 배열의 첫 번째 원소와 교체하고, 그 다음 최솟값을 찾아 두 번째 원소와 교체한다. 이를 배열 전체를 순회하며 수행하면 정렬된 배열이 완성된다. 배열에서 최솟값을 찾아 선택하는 과정 때문에 이름이 선택 정렬인 것 같다. 이를 파이썬 코드..
[프로그래머스] 덧칠하기 링크 문제 설명 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-tools mkcert 설치 $ 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) 의존성 주입 패턴(Dependency Injection Pattern)은 일반적으로 객체 생성 시, 해당 객체가 의존하는 다른 객체를 직접 생성하는 것이 아니라 외부에서 주입받도록 하는 방법이다. 이를 통해 객체 간의 결합도가 낮아지기 때문에, 유지보수 및 코드 재사용성이 높일 수 있다. Dependency Injector는 Python에서 의존성 주입 패턴을 구현할 수 있게 도와주는 라이브러리 중 하나이다. 이를 사용해 객체 간의 결합도를 낮추고, 코드의 유연성과 확장성을 높일 수 있다. 처음에는 이런 개념이 잘 와닿지 않았다. 이러한 Dependency Injector의 개념과 기능들을 코드 예시와 함께 설명하면 좀 더 쉽게 이해할 수 있다. class Database: def __init__(sel..