분류 전체보기
백준 1931 파이썬
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 두 번의 정렬을 하면 된다. 끝나는 시간 기준으로 정렬을 하고 시작시간 기준으로 다시 정렬을 진행하면 된다. 파이썬의 경우 람다식으로 해결할 수 있다. time.sort(key=lambda x: (x[1], x[0])) 이렇게 정렬한 후 입력값은 다음과 같이 바뀐다. [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)] 정렬된 수를 보면 시작시간이 끝나는 시간보다 크거나 같은 수만 채택하면 된다. ..
백준 13305 주유소 파이썬
https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 각 도시별로 비교해야하는 값은 다음과 같다. 첫 번째 도시라면 첫 번째 도시 주유값을 기준으로 정한다. 다음 도시까지 이동할 기름만 주유한다. 다음 도시와 첫 번째 도시를 비교해서 더 작은 곳의 기름을 주유한다. 만약 첫 번째 도시보다 두 번째 도시가 더 작다면 기준값도 두 번째 도시로 변경한다. 위를 반복해서 해결한다. n = int(input()) length = list(map..
백준 1449 파이썬
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 예제 4 2 1 2 100 101 물이 새는 곳을 정렬한다. 길이 2짜리 테이프로 가장 왼쪽부터 붙인다면 1,2 한장 100, 101 한장이 필요하다. 테이프를 한 번 붙였을 때 물이 새는 곳을 얼마나 덮을 수 있는지를 구하려면 처음 물이 새는 곳(1)에서 테이프의 길이만큼 더하면 된다. 테이프를 붙일 때 마다 물이 새는 곳의 값을 바꿔주면 해결된다. n, m = map(int, ..
슈독 -이번년도에 읽은 최고의 책
책을 읽으면서 소름이 돋은 적은 오랜만이었고 한 책을 읽으면서 여러번 소름이 돋은 적은 처음이었다. 자기계발서는 좋아하지만 소설류는 좋아하지 않는다. 이 책은 이런 내 생각을 송두리채 바꿔놓았다. 한 사람의 인생이 영화보다 더 영화같고, 슬픈일엔 눈물이 기쁜일엔 기쁨이 느껴졌다 마치 내가 필나이트가 된 것처럼. 책은 두껍다. 그래서 읽기 전에 겁먹기 쉽다. 하지만 글이 너무 잘 쓰여서 술술 읽힌다. 책을 읽다보면 얼마나 남았지? 라는 생각에 남은 장수를 살필 때가 있다. 나는 처음으로 500페이지가 넘는 분량을 읽는 동안 단 한번도 이런 생각이 들지 않았다. 개인적으로 이 책의 포인트는 아는 부분이 나올 때의 소름이다. 나이키라는 브랜드로 바뀌거나, 나이키의 마크, 나이키 에어 마지막에 빌게이츠와 워랜버..
No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type
상황 스프링 부트와 JPA를 사용 중 @Query문을 작성한 뒤 실행했는데 에러가 발생했다. JPA를 잘 알지 못해서 3일정도 걸렸다...ㅠ Entity: user id , perfumeName, image, email dto: perfumeName, countUserId, image 이런 식으로 엔티티를 조금 변형한 형식으로 받아야 했다. DTO: private String perfumeName; private String image; private int countPerfumeName; public PerfumeListResponseDto(FavoritePerfume entity, int countPerfumeName){ this.perfumeName = entity.getPerfumeName(); ..
no httpMessageConverter for
상황 ResponseEntity responseEntity = restTemplate.postForEntity(url, perfumeRequestDto, Long.class); restTemplate에서 에러가 발생했다. httpMessageConverter가 Dto에 없다는 뜻인데 기존에 잘 돌아가는 코드를 복붙 한 거라 어떤 부분에서 문제가 발생했는지 감을 잡지 못했다. 애꿎은 Service와 Controller를 건드려보고 구글에도 검색해봤지만 저 메시지와 동일한 에러가 없었다.그래서 오타로 인한 에러로 여기고 기존 코드와 내 코드를 자세히 비교해봤다. 해결 perfumeRequestDto에 @Getter @NoArgsConstructor 빠져서 발생한 에러였다. 기존 코드를 복붙 했지만 클래스명이..
should have [public, protected] no-arg constructor
상황 칼럼이 같은 DB 테이블이 2개 있다. id, userName, perfumeName, image로 구성되어 있고 각 칼럼마다 saveDto를 만드는것보다 합치는 것이 객체지향에 가깝다고 생각해 방법을 찾다가 @MapperdSuperclass를 발견했다. 이 테스트를 진행하니 builder부분이 없어서 에러가 발생했고 부모 클래스의 빌더를 활용하는 @SuperBuilder를 알게됐다. @SuperBuilder를 사용해 코드를 작성했지만 자식 클래스에서 should have [public, protected] no-arg constructor 가 발생했다. 시도해본 방안 자식 클래스에 생성자를 추가해봤는데 super()를 넣으라는 ide의 권고가 있었고 (넣지 않으면 에러 발생) 넣고 부모 클래스 형..
스프링 부트와 AWS로 혼자 구현하는 웹서비스
http://www.yes24.com/Product/Goods/83849117 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24 가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 www.yes24.com 스프링 부트 도서 중 명저라고 불려도 손색없다. 부트에 관해 깊게 들어가지 않으면서 핵심을 이해하기 쉽게 알려주는 도서는 정말 찾기 어려운데 이 책이 딱 그런 책이다. 물론 스프링을 접한 상태에서 봐야 한다. 이 도서의 가장 큰 장점은 왜?라는 질문이다. 많은 기술책에서 프레임워크 같은 것을 사용할 때 이유를 알려주지 않고 그냥 사용하지만,..
java.net.UnknownHostException
java.net.UnknownHostException: localhost1956 상황 등록기능 테스트 진행중 발생했다. 뒤의 localhost숫자는 랜덤하게 변경된다. Create을 만들고 Junit의 TestRestTemplate과 LocalServerPort를 생성해 http://localhost" + port + "/api/v1/pre 로 요청했는데 ResponseEntity responseEntity = restTemplate.postForEntity(url, preRequestDto, Long.class); 이곳에서 발생했다. 전에 스프링 부트와 AWS로 혼자 구현하는 웹 서비스에서 클래스 명만 다르고 나머지는 같은 프로젝트를 진행할 땐 발생하지 않았는데 이번에는 왜 발생했는지 모르겠다. 시도해..
스프링: 느슨한 결합력과 DI
느슨한 결합력 Service: 사용자의 요구사항이 담기는 곳 Dao: 자바를 사용해서 Service에서 요청하는 요구사항을 전달함 (데이터베이스에 접근하여) 시나리오 사용자가 요구사항 전달함 Service가 딱 보니 Dao1로 해결가능 Dao1이 DB에 접근하여 데이터를 가져와서 Service에 전달 Service는 사용자에게 전달 사용자가 받은 후 아... 이거 조금 바꿔달라 요구함 Service는 Dao2를 생성 후 다시 사용자에게 전달 사용자가 다시 수정해달라함 반복... 수정하는 방법엔 두 가지가 존재한다. dao1코드를 수정 dao1은 그대로 두고 dao2를 생성 1번 방식은 다시 dao1이 필요한 경우 다시 수정을 해야한다 2번 방식은 service는 dao1을 가리키고 있기 때문에 servi..