목록전체 글 (772)
컴공생의 다이어리
IntelliJ 자주 사용하는 코드 템플릿 화 코드를 작성하다 보면 반복적으로 같은 형식의 코드를 치는 경우가 발생한다. 인텔리제이에는 Live Template을 통해 자주 사용하는 코드를 템플릿 화할 수 있다. 기본적으로 설정되어 있는 라이브 템플릿 중 sout과 psvm 등이 있으며 sout과 psvm 키워드를 입력했을 때 아래와 같이 자동 완성 된다. // sout System.out.println(); // psvm 키워드 public static void main(String[] args) { } 이제 테스트할 때 사용할 커스텀 템플릿을 만들어보려고 한다. 아래와 같은 형태의 템플릿을 만들려고 한다. @Test @DisplayName("") void 메서드명() { // Given // When..
다익스트라(Dijkstra) 다이나믹 프로그래밍을 활용한 대표적인 최단 경로 탐색 알고리즘 특정한 노드에서 출발해 연결되어 있는 다른 모든 노드로 가는 최단 경로를 구하기 위한 알고리즘 0보다 작은 값을 가지는 음의 간선이 없어야 정상적으로 동작 보통 우선 순위 큐를 구현하기 위해 사용되는 heapq 라이브러리를 활용해서 구현 GPS 소프트웨어의 기본 알고리즘으로 채택 과정 출발 노드를 설정 출발 노드를 기준으로 각 노드의 최소 비용을 저장 방문하지 않은 노드 중에서 가장 비용이 적은 노드를 선택 해당 노드를 거쳐서 특정한 노드로 가는 경우를 고려하여 최소 비용을 갱신 위의 3번 ~ 4번 과정을 반복 동작 단계에 대한 예시는 아래 게시물이 잘 정리되어 있으니 참고하면 좋을 것 같다! [알고리즘] 다익스트..
Spring @RequiredArgsConstructor 어노테이션 의존성을 주입해주기 위해서 생성자(Constructor), Setter, Field 타입의 방식을 사용해야 했다. 하지만 lombok(롬복)의 @RequiredArgsConstructor 어노테이션을 사용하면 간단한 방법으로 생성자 주입을 해줄 수 있다. @RequiredArgsConstructor는 final 혹은 @NotNull이 붙은 필드의 생성자를 자동으로 만들어준다. 이를 통해 새로운 필드를 추가할 때 다시 생성자를 만들거나 하는 등의 번거로움을 없앨 수 있다. 하지만 자동적으로 생성자가 만들어지기 때문에 내가 예상하지 못한 결과나 오류가 발생할 수 있기 때문에 그런 점도 염두해둬야 한다. 아래는 생성자 주입 방법의 차이를 보여..
[MySQL] ORDER BY FIELD() - 특정 값 우선 정렬 MySQL에서 ORDER BY 에서 FIELD()함수를 사용하면 특정한 값을 우선적으로 정렬할 수 있다. 기본적으로 ORDER BY는 기본적으로 ASC, DESC 형태로 정렬이 되지만 FIELD 함수를 사용하면 1,2,3,4,5 혹은 5,4,3,2,1 처럼 정렬되는 것이 아닌 3,4,2,5,1 순서와 같이 내 설정에 맞춰 정렬될 수 있다. SELECT * FROM 테이블명 ORDER BY FIELD(컬럼1, 우선 정렬할 값, 두번째 정렬할 값, 세번째 정렬할 값, ...); 컬럼1의 값 중에 정렬할 값들 중에 해당하는 값이 없다면 0번째 순위를 갖는다. 관련해서는 FIELD 함수 관련 글을 여기 클릭해서 참고하는 것을 추천한다. http..
[MySQL] FIELD 함수 FIELD 함수는 찾는 문자열이 어디에 위치했는지 찾을 때 사용된다. 아래와 같은 형태로 사용되며 찾는 문자열이 str1과 같다면 1을 반환하고, str2와 같다면 2를 반환하고 일치하는 문자열이 없다면 0을 반환합니다. FIELD(찾는 문자열, str1, str2, str3, ...); Example SELECT FIELD('하하', 'ㅇㄴ', '하하', '안녕'); # 2 반환 SELECT FIELD('하하', '안녕', 'ㅇㄴ', 'hello'); # 0 반환 https://mohading.tistory.com/36 [Mysql] 문자열 찾기, 원하는 순서로 정렬 - FIELD 함수 Field 함수는 FIELD(찾는 문자열, 문자열1, 문자열2, ...) 형태로 사용된..
백준 14676번 : 영우는 사기꾼? (문제 바로가기) 내 코드 import sys from collections import defaultdict input = sys.stdin.readline # n : 건물 종류의 개수, M : 건물 사이의 관계수, k : 영우의 게임 정보의 개수 n, m, k = map(int, input().split()) graph = defaultdict(list) # 건물 관계 indegree = [0] * (n + 1) # 진입 차수 build = [0] * (n + 1) # 빌딩 몇개 지어졌는지 check = False # 치트키 여부 for _ in range(m): # 건물 관계 x, y = map(int, input().split()) graph[x].append..
IntelliJ Execution failed for task ':compileJava'. 인텔리제이에서 프로젝트를 실행하다가 간혹 아래와 같이 Execution failed for task ':compileJava'. 에러가 발생하는 경우가 있을 것이다. 이 에러가 발생하는 이유는 프로젝트와 나의 JDK버전이 맞지 않아서 발생하거나 자바 경로 설정 문제 때문에 발생한다. 나의 경우 프로젝트와 JDK버전이 맞지 않아서 문제가 발생했다. build.gradle에는 JDK 버전이 16을 써야 한다고 설정해두었는데 IntelliJ에 설정된 자바 버전이 11이었다. 나의 경우 JDK 버전을 16말고 11로 변경해도 프로젝트에 영향이 없었기 때문에 16을 설치하지 않고 그냥 sourceCompatibility를 ..
Python turtle(터틀) 그래픽 창 안 닫히게 하기 파이참이나 vscode에서 turtle을 사용할 때 turtle 그래픽창이 바로 꺼지는 경우가 있는데 이 경우 맨 마지막 줄에 아래 코드를 넣어주면 그래픽창이 바로 꺼지지 않고 마우스로 그래픽창을 클릭했을 때 창이 닫히도록 설정된다. turtle.exitonclick() https://althoughh.tistory.com/37 pyCharm 파이참에서 터틀창이 바로 닫힐 때 쓰는 명령어 이번에 새로 파이썬 공부를 시작하게 되었다. 공부를 시작한 이유는 장고를 활용하여 웹 서비스를 개발해보고 싶었고 또한 알고리즘 공부를 파이썬을 통해서 하고 싶은 마음이 있기 때문이다. althoughh.tistory.com
Spring Boot 시작 배너 없애기 Sprint Boot 애플리케이션을 구동하면 아래와 같은 시작 배너가 뜬다. 이 시작 배너를 없애는 방법이 몇가지 있는데 이에 대해 정리하고자 한다. 방법1) application.properties 혹은 application.yml 설정 application.properties 혹은 application.yml에 아래와 같은 설정을 넣어 배너를 없앨 수 있다. # application.properties spring.main.banner-mode=off # application.yml spring: main: banner-mode: "off" 방법2) Customizing Spring Applicatoin SpringApplication을 커스터마이징해서도 배너를..
Intellij 톰캣(Tomcat) 연동 로컬에 톰캣이 있다는 가정하에 진행하려고 한다. 만일 톰캣이 설치되어 있지 않다면 아래 사이트에서 톰캣을 다운받으면 된다. 나의 경우 9 버전으로 다운받았는데 원하는 버전이 있다면 해당 버전으로 다운받으면 된다. https://tomcat.apache.org/download-90.cgi Apache Tomcat® - Apache Tomcat 9 Software Downloads Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as ..