목록전체 글 (113)
모눈종이에 사각사각
🍎[프로그래머스] 전화번호 목록 문제링크 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr ⚾ 코드 def solution(phone_book): answer = True phone_book.sort() # 정렬을 한다. 그러면 접두어가 같은 순서대로 정렬이 될 것이다. for i in range(len(phone_book)-1): if phone_book[i] == phone_book[i+1][:len(p..
🍎 [프로그래머스] 문자열 압축 문제링크 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr ⚾ 코드 def solution(s): result = 1000 # 최종 반환 될 문자열의 길이 if len(s) == 1: # 만약 문자열의 길이가 1이라면 return 1 # 1 반환 for i in range(1, len(s)): # i = 자르는 단위 수 answer = "" count = 1 for j i..
🍎 [백준 1719] 택배 문제링크 https://www.acmicpc.net/problem/1719 1719번: 택배 명우기업은 2008년부터 택배 사업을 새로이 시작하기로 하였다. 우선 택배 화물을 모아서 처리하는 집하장을 몇 개 마련했지만, 택배 화물이 각 집하장들 사이를 오갈 때 어떤 경로를 거쳐야 하 www.acmicpc.net ⚾ 코드 - 다익스트라 import sys import heapq input = sys.stdin.readline INF = int(1e9) N, M = map(int, input().split()) result = [[0]*(N+1) for _ in range(N+1)] # 결과 테이블 graph = [[] for _ in range(N+1)] for _ in rang..
🍎 [백준 9466] 텀 프로젝트 문제 링크 https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net ⚾ 코드 import sys sys.setrecursionlimit(1000001) # 재귀 깊이 설정 input = sys.stdin.readline def find_group(start): global group visited[start] = True cycle.append(start) # cycle 리스트에 삽입 if visited[student[sta..
프로젝트 진행 중에 가게의 다음 영업시간을 알아내기 위해서 프로시저를 만들었었다. 이를 JDBC 템플릿에서 어떻게 호출하는 지 몰라 공부하면서 구현했기 때문에 복습 겸 적어보려고 한다. 이번 포스팅에서는 MySQL에서 작성한 프로시저를 SimpleJdbcCall을 사용하여 어떻게 호출하지 알아 볼 것이다. SimpleJdbcCall을 이용하면 프로시저 호출을 할 수 있다. 1. 호출할 프로시저 지정 먼저 호출할프로시저를 지정한다. 내가 작성한 프로시저의 이름은 'business_hours_loop' 이다. // 프로시저 지정 SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate) .withProcedureName("business_hours_l..
이번 포스팅에서는 0-1 BFS 알고리즘에 대해 알아보고자 한다. 백준 13549 숨바꼭질3 문제를 풀 때 0-1 BFS 알고리즘이 있다는 사실을 알게 되었다. 0-1 BFS는 가중치가 0과 1로만 주어진 그래프에서 최단 경로를 찾고자 할 때 BFS를 응용하여 푸는 것이다. 가중치가 0과 1만 있을 때는 최단거리를 찾을 경우에 다익스트라가 가장 좋은 선택이 아니다. 다익스트라 알고리즘의 시간 복잡도는 \(O(ElogE)\) 혹은 \(O(ElogV)\)인 반면, 0-1 BFS를 사용하면 \(O(V+E)\)의 상수시간으로 문제를 해결할 수 있다. 🍀 0-1 BFS의 동작 과정 deque를 활용해서 진행한다. 1. deque에서 popleft()로 현재 노드를 꺼낸다. 2. 연결된 인접 노드를 살펴본다. 3...
🍎 [백준 13549] 숨바꼭질3 문제링크 https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net ⚾ 코드 from collections import deque N, K = map(int, input().split()) # N: 언니, K:동생 INF = int(1e9) second = [INF]*(max(N, K)*2) # 언니와 동생중 큰 값의 두 배 길이의 second 리스트 생성 def check_range(n..
🍎 [백준 11265] 끝나지 않는 파티 문제링크 https://www.acmicpc.net/problem/11265 11265번: 끝나지 않는 파티 입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸 www.acmicpc.net ⚾ 코드 # 11265 끝나지 않는 파티 import sys input = sys.stdin.readline N, M = map(int, input().split()) # N: 파티장의 크기, M: 서비스를 요청한 손님의 수 graph = [list(map(int, input().split())) for _ in..
🍀 SpringBoot 백그라운드에서 실행 - nohup 항상 컴퓨터를 켜두고 서버를 실행시킨다면 상관없지만, 터미널을 끄고 켤 때마다 다시 빌드를 하고 서버를 실행시키는 것은 꽤나 불편한 일이다. nohup 명령어를 사용한다면, 프로그램을 백그라운드에서 실행시킬 수 있다. 먼저 빌드클린을 한 후 빌드를 한다. ./gradlew clean build 만약 여기서 권한 오류가 난다면 상위 디렉토리로 이동해서 권한을 부여한다. 그리고 다시 원래 디렉토리로 이동한다. cd .. chmod -R 777 [디렉토리 이름] cd [디렉토리 이름] 지금까지는 다음과 같은 명령어를 통해 포어 그라운드에서 실행시켰다. java -jar build/libs/[프로젝트 이름]-0.0.1-SNAPSHOT.jar 🥦 백그라운드..
🍀 EC2 서버 시간 맞추기 프로젝트 진행 중에, 주문 시간은 현재 시간으로 입력되도록 맞춰놨다. 로컬에서는 잘 입력되던 것이, EC2 서버에 올려 실행해보니 시간이 9시간 느린 것이다! 알고보니 EC2 서버 시간은 한국 시간이 아니기 때문에 맞춰줘야 한다고 한다. 1. 현재 시간 확인 date date 명령어를 치면 현재 시간을 확인할 수 있다. 지금 시각과 다르다면 시간대가 다르게 설정되어 있는 것이기 때문에 바꿔주어야 한다. 2. timezone 확인 more /etc/timezone 위의 명령어는 현재 설정된 timezone의 상태를 확인하는 것이다. 잘 설정되어 있다면 Asia/Seoul로 뜨고 아니라면 Etc/UTC라고 되어있을 것이다. 3. timezone 변경 TimeZone을 변경하기 위..