분류 전체보기 19

[BOJ] 18405번: 경쟁적 전염 (파이썬)

https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 시험관에 존재하는 바이러스를 오름차순으로 목록에 넣고 하나씩 꺼내어 전파 결과를 적용합니다. 바이러스의 종류와 위치 정보, 그리고 시간 정보를 포함하는 배열 virus 을 준비합니다 바이러스의 전파는 번호가 낮은 순으로 이루어지기에 정렬을 수행합니다 virus를 deque로 변환하고 하나씩 꺼내어 4방향으로 전파를 수행합니다 다른 바이러스가 존재하거나 시험관을 벗어나..

알고리즘 2022.04.16

[BOJ] 18352번: 특정 거리의 도시 찾기 (파이썬)

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 출발 도시부터 시작하여 방문 가능한 도시들로 이동하며 필요한 거리를 갱신합니다. 방문하지 않은 도시에 대한 거리는 -1로 초기화합니다 출발 도시까지의 거리는 0으로 초기화합니다 BFS 현재 도시 cur 에서 방문할 수 있는 도시 vertices[cur] 들을 확인합니다 아직 방문하지 않았다면(거리가 -1이라면) "현재 도시까..

알고리즘 2022.04.16

[프로그래머스] 기둥과 보 설치 (파이썬)

https://programmers.co.kr/learn/courses/30/lessons/60061 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1]] [[ programmers.co.kr 각 작업을 기존의 구조물에 적용시키고, 건축물이 규칙을 만족하지 않는다면 작업을 취..

알고리즘 2022.04.16

[BOJ] 3190번: 뱀 (파이썬)

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 뱀과 사과의 정보를 2차원 행렬에서 관리하지 않고, 각각의 좌표들을 담고 있는 목록으로 관리하였습니다. 뱀의 정보를 (y, x) 좌표의 목록 deque로 관리합니다 사과 정보 역시 (y, x) 좌표의 목록 list로 관리합니다 타이머를 증가시키며 아래의 조건에 따라 움직입니다 현재 진행방향으로 움직여서 보드를 벗어나는 경우 종료 현재 진행방향으로 움직여서 뱀을 만나는 경우 종료 앞선 2개의 종료 조건을 ..

알고리즘 2022.04.16

[프로그래머스] 문자열 압축 (파이썬)

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr ​길이별로 문자열의 압축을 진행하고 그 결과의 길이를 비교하여 최솟값을 반환합니다. solution 길이가 1 인 경우, 아무 작업도 수행하지 않고 문자열을 그대로 반환합니다 길이가 2 이상인 경우, 1부터 "문자열의 길이-1"까지 숫자를 증가시키며 문자열 압축을 시도하고 최솟값을 반환합니다 compress 문자열을 특정한 길이로 압축합니다 문자열을 일정..

알고리즘 2022.04.16

Python Jupyter Notebook 매직 커맨드 모음

Jupyter Notebook Magic Command 모음 Jupyter Notebook은 웹 기반의 Python 실행 환경입니다. 이미지와 HTML과 같은 요소들을 출력할 수 있으며 코드와 문서를 하나의 파일로 작성하여 배포할 수 있습니다. 이러한 Jupyter Notebook(이하 Jupyter)에는 magic command라고 하는 기능이 존재합니다. 명령어는 특정 동작을 수행하기 위해 필요한 코드를 생략할 수 있도록 만들어 주거나, 코드 블록의 실행 시간을 측정하여 출력하는 등 편리한 기능들을 포함하고 있습니다. 아래와 같이 %lsmagic이라는 명령어를 입력하면 사용 가능한 magic command들이 출력됩니다. 이 중에서 몇 가지를 살펴보겠습니다. 1. %time, %timeit, %%ti..

개발환경 2022.02.17

[VScode] 추천 확장 모음

Visual Studio Code 추천 확장 모음 VScode는 다양한 확장 기능들과 테마들을 Marketplace에서 제공하고 있어 쉽게 설치하여 관리가 가능합니다. 많은 프로그래밍 언어에 대한 공식 지원 확장도 Microsoft에 의해 제작되어 편하게 사용할 수 있습니다. 추천 테마 VScode를 사용하면서 마음에 드는 테마가 없어 계속 새로운 테마를 찾아다녔지만, 이 테마를 만난 이후로는 몇 년 동안 변함없이 사용하고 있습니다. 개인적으로 VScode 뿐만 아니라 다른 프로그램에서도 이 테마를 적용해서 사용합니다. Dracula Official 추천 확장 indent-rainbow 프로그래밍 언어 중에는 Python과 같이 들여 쓰기(indentation)에 민감한 언어들이 존재합니다. 그래서 들여..

개발환경 2022.02.14

[VScode] 단축키 모음

Visual Studio Code 단축키 모음 주요 단축키 Ctrl + F2: 일치하는 모든 단어를 선택합니다. Ctrl + Shift + L: 일치하는 모든 단어를 선택합니다. Ctrl + D: 현재 항목과 일치하는 단어를 선택합니다. 단축키를 입력할 때마다 일치하는 항목이 하나씩 추가적으로 선택됩니다. Ctrl + U: 다른 단축키를 사용하여 선택한 항목을 하나씩 취소합니다. 예를 들어, Ctrl + D로 선택한 항목들 중 마지막 항목의 선택을 해제합니다. Shift + Alt + Up / Shift + Alt + Down: 커서가 위치한 줄의 위 또는 아래에 동일한 내용을 추가합니다. Alt + Up / Alt + Down: 커서가 위치한 문장과 위 또는 아래의 문장의 순서를 교체합니다. Ctrl ..

개발환경 2022.02.13