전체 글 35

파이썬 / BOJ / 2178번 미로탐색

문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력..

알고리즘 2020.03.29

[python] 모듈과 패키지

파이썬을 공부하다 보면 모듈을 import 하는 방식이 코드마다 여러 개 임을 볼 수 있다. 그래서 그 차이점을 공부해보았다. 모듈 특정 기능을 .py 파일 단위로 작성한 것 패키지 특정 기능과 관련된 여러 모듈을 묶은 것. 패키지는 모듈에 네임스페이스를 제공 라이브러리 파이썬에 기본으로 설치된 모듈과 패키지, 내장 함수를 묶어서 파이썬 표준 라이브러리(PSL)이라고 부름 import VS from import VS import as 1) import import의 경우 모듈 이름을 뒤에 붙이며, 여러 개를 가져올 때는 모듈을 콤마로 구별 그리고 모듈.변수 형식으로 모듈의 변수를 사용하며 함수의 경우에도 모듈.함수() 이런 식으로 사용한다. ex) import ModuleName1, ModuleName2..

공부 2020.03.29

파이썬 / BOJ / 1260번

문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다. ..

알고리즘 2020.03.23

[선형대수] Norm이란? (L0, L1, L2 Norm)

Norm? 백터에서의 길이 혹은 크기를 측정하는 방법이다. norm이 측정한 벡터의 크기는 원점에서 벡터 좌표까지의 거리라고 한다. 이 공식에서 P는 norm의 차수를 의미하며, p가 1이면 L1 norm이고, p가 2면 L2 norm이다. L0 Norm 실제로는 norm이 아니다. 벡터의 0이 아닌 요소의 총 갯수에 해당한다. ex) v(0,0), v(0,2)의 L0 norm의 개수 : 1개 (0이 아닌 element 개수를 쓰면 됨) L1 Norm Taxicab Norm 또는 manhattan Norm이라고 한다. 백터 요소에 대한 절댓값의 합 요소의 값 변화 파악할 수 있다. L1 regularization과 computer vision 분야에서 사용한다. L2 Norm Euclidean norm이..

공부 2020.03.23

파이썬 / 프로그래머스 / 완주하지 못한 선수

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["leo", "kik..

알고리즘 2020.03.14

[자료구조] 해시(Hash), 해시테이블(Hash table),해싱(hashing) 이란?

개념 해시함수(hash function)란 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 이 때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing)이라고 한다. 해시 테이블은 다음과 같은 총 5개[키(key), 해시함수(hash function), 해시(hash), 값(value), 저장소(bucket,slot)]로 이루어진다. 키(key) : 고유한 값이며, 해시 함수의 input이 된다. 해시함수(Hash function) : 키(key)를 해시(hash)로 바꿔주는 역할을 한다. 해시(hash) : 해시 함수(hash function)의 결과물이며, 저장소(bu..

공부 2020.03.13

파이썬 / BOJ / 13458번

문제 총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다. 감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다. 각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다. 각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (..

알고리즘 2020.03.11

파이썬 / 프로그래머스 / 이중우선순위큐

문제설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합..

알고리즘 2020.03.09

파이썬 / 프로그래머스 / 카펫

문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한 사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 빨간색 격자의 수 red는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. ..

알고리즘 2020.03.05

로드밸런싱이란?

로드밸런싱(load balancing)이란? 부하분산이라고도 불리며, 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미. 또한 거대한 트래픽의 감당을 줄이기 위한 방법으로 제시됨. 보통 트래픽의 서버의 부화가 심할 때는 가장 먼저 하는 일은 DB와 서버를 분리하는 것. DB서버의 분리만으로도 서버의 부하를 감당할 수 없음. 가용성 및 응답시간을 최적화 시킬 수 있음. 이 기술은 보통 내부 네트워크를 이용한 병렬처리에서 이용된다. 로드 밸런싱 방법으로는 2가지가 있다. 네임(DNS)서버의 도메인을 이용한 DNS 라운드 로빈 L4를 이용한 로드밸런싱 라운드로빈 DNS(Round Robin DNS) 특별한 하드웨어 및 소프트웨어가 필요가 없는 방식이 있다. 서버가 A, B, C 3대..

공부 2020.02.29