본문 바로가기

분류 전체보기

(87)
BOJ 2887 행성 터널 www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 문제를 요약하자면 MST의 Cost를 구하는 문제이다. 단, 이 문제의 값 크기는 1 ≤ N ≤ 100,000 로 Naive하게 모든 행성들의 간선 거리를 구하려고 한다면 10^15가 되어 시간내에 풀지 못할 것이다. 이 문제에서 잘 봐야할 것은 터널을 연결할 때 드는 비용이다. "두 행성 A(xA, yA, zA)와 B(xB, yB, zB)를 터널로 연결할 때 드는 비용은 min..
라인 코딩 테스트 후기 1차 시험 120분에 총 4문제를 풀었다. 1,2,3,4 번 문제는 모두 구현 문제였다 1,2번은 쉽게 가져가는 문제였고, 3번 문제는 PS를 좀 해야 풀 수 있는 문제 4번은 PS보단 구현력이 더 필요한 문제였다. 특히 4번문제는 굳이 문제에서 보이는 자료구조를 사용하지 않고, parameter에서 naive하게 긁어와서 사용해도 충분히 풀 수 있는 문제였다. 언어는 c++, python을 이용했으며, 1,3번문제는 c++, 2,4번문제는 python을 이용했다 이번 코테에서는 1,2,4번을 풀고, 3번을 풀지 못했다. 3번은 그냥 구현문제인것 같은데 왜 쉽게 구현을 못하겠는지.... 이번 코테의 패착이라고 한다면, 1,2 번문제에서 시간을 줄이지 못했다는 것이다. 구현력이 좋은편도 아닌데 프로그래머스..
maven/gradle 설치하기 (Ubuntu 20.04) maven은 전반적인 프로젝트 관리를 위한 프레임 워크이다. gradle은 그루비를 이용한 빌드 자동화 시스템이다. 컴파일/패키징부터 웹 배포까지 개발 주기 전반을 지원한다. 그루비는 JVM에서 작동하는 동적 타이핑 프로그래밍 언어이다. spring을 사용하기 위해서 다운 받으려고 한다. MAVEN 설치 1. maven.apache.org/index.html 에 접속하기 2. Download Tab에서 apache-maven bin 압축파일 다운하기. 3. 압축 풀기 4. 압축 해제한 폴더를 /opt 로 옮기기 (굳이 여기로 옮기지 않아도 됨) 5. PATH에 apache-maven 의 bin 경로 추가, 적용 #in .bashrc export PATH=$PATH:/opt/apach-maven-3.6.3..
BOJ 13334 철로 www.acmicpc.net/problem/13334 13334번: 철로 입력은 표준입력을 사용한다. 첫 번째 줄에 사람 수를 나타내는 양의 정수 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 각 줄에 정수 쌍 (hi, oi)가 주어진다. 여기서 hi와 oi는 −100,000,000이상, 100,000,0 www.acmicpc.net 이 문제를 단순화 시킨다면 다음과 같이 정의할 수 있다. "시작점으로부터 거리 d (d > 0) 보다 가까이 있는 도착점의 개수 중 최대 값" 그래서 시작점, 도착점을 각각 벡터에 저장하여 정렬한 뒤, 2-pointer를 사용하여 문제를 해결하였다. 시작점으로부터 거리가 d 초과인 도착점이 나올 때 까지 도착점의 index를 하나씩 늘렸고, 그에 따라 loca..
apt remove vs purge java 설치 포스팅을 위해 참고한 사이트에서 open jdk 삭제를 위한 command로 다음 명령을 사용하는 것을 보았다. $ sudo apt-get purge openjdk* 나는 보통 remove만 사용했었는데 purge와 remove가 무슨 차이인지 궁금하여 man command를 통해 차이점을 찾아보았다. $ man apt remove는 user configuration 파일을 남기지만, purge는 user configuration 파일까지 지우고, 이미 삭제된 패키지의 configuration 파일까지 지울 수 있다.
JAVA 설치하기 (Ubuntu 20.04) 0. apt update 하기 $ sudo apt update && sudo apt upgrade 1. openjdk-11-jdk 설치 $ sudo apt install openjdk-11-jdk java 설치 확인 $ java -version openjdk version "11.0.10" 2021-01-19 OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing) $ javac -version javac 11.0.10 2. 환경 변수 설정 ~/.bashrc 파일에 다음 내용 추가 # ~/..
Virtualenv 실행시 오류 Flask 튜토리얼을 따라 virtualenv를 설정하는 과정중에 다음과 같은 에러를 만났다. .\venv\Scripts\activate : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\tkwpv\git\Flask\venv\Scripts\activate.ps1 파일을 로드할 수 없습니다. + .\venv\Scripts\activate + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : 보안 오류: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess 이 에러는 powershell의 보안정책에 의해 발생한다고 한다. 보안 설정 해제는 Set-ExecutionPolicy Unrestricte..
BOJ 5052 전화번호 목록 www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 처음에는 Naive하게 문자열을 입력받을 때 마다 지금까지 입력받았던 모든 문자열과 비교하여 일관성을 체크하는 방법을 생각했다. 해당 방법은 시간복잡도 O(t * n ^2) 이니 될리가 없었다. 이 문제에서 시간을 줄이기 위해서는 앞서 입력받은 문자열들과 비교하는 횟수를 줄일 필요가 있다. 문자열의 비슷한 구간이 모아져있다면, 비교횟수를 줄일 수 있을 것이라고 생각했고, 이와 비슷한 아이..