전체 글

알고리즘/DFS BSF

이코테, 백준 - 18428

문제 https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net dfs를 이용해 장애물 설치의 모든 경우의 수를 다 해보고 감시를 피할 수 있는지 확인하는 문제였다. (백트래킹) 문제 풀이 처음에는 빈 칸의 좌표를 따로 저장하지 않고, 상하좌우로만 이동하며 장애물을 설치했는데 비효율적인 것 같아서 빈 칸의 좌표를 map 입력받을 때 같이 저장해줬다. 그리고 엄청난 실수를 했는데, dfs에서 count+1과 i+1을 넘겨줘야 했는데 count+1과..

알고리즘/DFS BSF

이코테, 백준 - 14888

문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net dfs를 이용해 모든 경우의 수를 다 계산해 최솟값과 최댓값을 찾아내는 문제였다. 성공 떠있길래 보니까 1년 전에 풀었던 문제였는데 푼 기억이 없고 처음 보는 문제같았다. 만약 1년쯤 뒤에 또 이 문제를 보면 처음 보는 문제같을까..? 문제 풀이 dfs를 이용해서 연산자 4개에 대해 모든 경우에 다 적용해주었고, 종료 조건에 도달했을..

알고리즘/DFS BSF

이코테, 프로그래머스 - 괄호 변환

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 순서에 따라 괄호를 올바르게 바꾸는 문제였다. 그냥 시키는대로 따라서 코드를 작성하기만 하면 됐다. 풀이 방법 4번째 순서에 대한 코드를 작성할 때, u의 괄호를 반대로 저장하는 부분을 u를 뒤집어서 저장하도록 만들어서 조금 헤맸다; 이런 실수는 대체 왜 하는걸까? 집중력의 문젠가? 졸리긴 했음; #include #include #include using namespace std; b..

spring

json 파싱 (json-simple)

webClient의 response가 json 형식이어서 처음에는 dto를 만들어서 정보를 다 받자! 고 생각했는데 나에게 필요하지 않은 정보가 대다수여서 String으로 받은 후 json 파서를 이용해 필요한 정보만 저장하기로 했다. (정말 많은 정보가 response로 들어왔는데 필요한 field는 8개 정도였다) Java 진영에서 많이 사용하는 Json 파서는 Jackson, GSON, json-simple 이렇게 3가지가 있는데 빅데이터 환경(Jackson)도 아니고, 마이크로 서비스나 분산 아키텍처 서비스(GSON)도 아니기 때문에 json-simple을 선택했다. build.gradle implementation group: 'com.googlecode.json-simple', name:'js..

spring

WebClient

webclient Spring WebFlux에서 제공하는 리액터 기반 비동기 형식으로 사용 가능한 API build.gradle implementation 'org.springframework.boot:spring-boot-starter-webflux' WebClientConfig timeout, 버퍼 메모리(기본이 256KB), 기본 header를 설정해줬다. webClient의 설정을 변경하고 싶으면 mutate를 사용해 복사해서 사용하면 된다. @Configuration public class WebClientConfig { @Bean public WebClient webClient(){ HttpClient httpClient = HttpClient.create().option(ChannelOpti..

알고리즘/구현

이코테, 프로그래머스 - 기둥과 보 설치

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr command 리스트에 따라 주어진 조건에 맞게 기둥과 보를 설치/해제하는 문제였다. 조건 기둥은 바닥 위에 있거나 보의 한쪽 끝 부분 위에 있거나, 또는 다른 기둥 위에 있어야 합니다. 보는 한쪽 끝 부분이 기둥 위에 있거나, 또는 양쪽 끝 부분이 다른 보와 동시에 연결되어 있어야 합니다. 문제 풀이 처음에 문제를 잘못 이해해서 다시 풀었다... 보의 양 끝이 하나의 보를 말하는게 아니라 ..

spring/JPA

BaseEntity

생성 시간과 수정 시간을 상속만으로 간단하게 추가할 수 있도록 한다. BaseEntity @EntityListeners(AuditingEntityListener.class) 해당 클래스에 Auditing 기능을 추가해준다. (Jpa가 자동으로 시간 등을 기록해주는 기능) MappedSuperclass 해당 클래스 상속 시 createdAt과 updatedAt을 칼럼으로 인식하게 한다. SpringApplication에 @EnableJpaAuditing을 적용하면 활성된다. @Getter @EntityListeners(AuditingEntityListener.class) @MappedSuperclass public abstract class BaseEntity { @CreatedDate @Column(up..

spring

예외 처리 - @RestControllerAdvice

작년에 프로젝트를 진행할 때는 각 서비스와 컨트롤러 단에서 if로 체크해서 예외처리를 해줬다. 불편하다고 생각하고는 있었는데 전체를 다른 방식으로 바꿀 정도로 불편한건 아닌거 같아서 그대로 사용하다가 올해 프로젝트를 새로 하면서 전역 예외 처리를 사용하면서 이 방식에 대해 알게되었고, 지금 새로 시작한 프로젝트에서 전역 예외 처리를 구현해서 티스토리에 정리한다. 체크 예외, 언체크 예외 체크 예외 컴파일러가 처리하는 RuntimeException을 상속받지 않는 예외로 이를 처리하지 않으면 CompileError가 발생한다 (IOException, SQLException) 언체크 예외 RuntimeException을 상속받는 예외로 예외처리가 필수는 아니며 Transaction 롤백 대상이다. (비즈니스..

hahihi
히호 노트