목록ETC (35)
elevne's Study Note
문제 2178 번. 미로탐색 링크: https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 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)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서..
한 프로젝트를 진행할 때 프로젝트에 참여하는 한 개발자는 새로운 기능을 개발, 다른 개발자는 버그를 수정할 수 있다. 동일한 프로젝트를 기반으로 서로 다른 버전의 코드를 만들어낼 수 있다는 뜻이다. 이러한 작업을 위해 Branch 라는 기능이 사용된다. Branch 란 프로젝트 기준 코드인 master 브랜치로부터 독립적인 작업 공간을 만들어주는 기능이다. 여러 개발자가 서로 다른 버전의 코드를 만들 때 서로의 작업에 영향을 주고받지 않기 위해 필요하다. 지금까지 사용한 master 브랜치는 깃에서 기본적으로 제공하는 브랜치이기에 별도로 생성하는 과정 없이도 사용할 수 있었다. master 브랜치는 가장 최근 생성된 커밋을 바라본다. 또, 이전 시간에 알아본 것처럼 HEAD 포인터는 현재 작업하는 곳(브..
Git 으로 관리하는 파일 상태를 이해하기 위해서는 Working Tree (작업트리) 의 개념을 알아야 한다. Working Tree 란 Git 이 관리하는 파일과 관리하지 않는 파일을 구분하고, 관리하는 파일들의 상태를 구분 짓는 영역이다. (Working Tree 에 대한 내용 또한 .git 폴더 내에 저장된다) Working Tree 는 크게 3 가지 영역으로 나뉜다. 첫 번째로는 Working Directory 로, 실제 작업 중인 파일들이 존재하는 영역이다. 두 번째로 Staging Area 가 있는데, 이는 Working Directory 에서 작업 중인 파일 중 Git 이 추적하는 파일들을 식별하는 영역이다. (실제로는 .git 폴더 내의 index 파일에서 관리하는 파일들을 식별한다) 마..
프로젝트에 사용되는 Redis, MySQL DB 를 도커를 활용하여 띄워서 사용하기로 하였다. 이후에 다른 프로그램들을 추가적으로 사용하게 되었을 때 그러는 편이 편리할 것으로 생각되었기 때문이다. 우선 Docker desktop 을 설치해주고, MySQL 과 Redis 이미지를 pull 받는다. docker pull redis docker pull mysql 한 번에 여러 개의 컨테이너를 실행해야 하기 때문에, 명령어를 한 번에 실행할 수 있는 도커 컴포즈 파일을 작성해야했다. (도커 컴포즈는 시스템 구축에 필요한 설정은 yml 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행 또는 일괄 종료 및 삭제할 수 있는 도구) Docker-compose 는 docker run 명령어를 여러 개 모아..
링크: https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정의한다. 해시 함수는 무궁무진한 응용 분야를 갖는데, 대표적으로 자료의 저장과 탐색에 쓰인다. 이 문제에서는 여러분이 앞으로 유용하게 쓸 수 있는 해시 함수를 하나 가르쳐주고자 한다. 먼저, 편의상 입력..
링크: https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. import sys def solution(): n = int(sys.stdin.readline()) fac = 1 for i in range(1, n+1): fac *= i x = 0 for num in list(reversed(list(str(fac)))): if num == "0": x += 1 else: return x if __name__ == "__main__": pr..
링크: https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 ..
링크: https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 정렬 기준이 2 개가 있는 문제였다. 파이썬에서는 sort 함수의 key 파라미터를 사용하여 정렬 기준을 직접 정해줄 수 있다. 이 때, 여러 개의 정렬 기준을 잡아줄 수도 있..