본문 바로가기

전체 글92

[백준] 15659번 : 연산자 끼워넣기(3) java https://www.acmicpc.net/problem/15659 15659번: 연산자 끼워넣기 (3) 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 풀이 풀이 자체는 브루토포스 이지만, '식의 계산은 연산자 우선 순위를 이용해 계산해야 한다' 라는 문장에서 많이 막혔을 것이다... 나도 풀이가 도저히 떠오르지 않아서 찾아봤다 ... 우선순위 계산할땐 Deque자료구조를 이용하여 풀면된다. 연산자가 +, - 이면 우선순위가 낮으니 Deque의 마지막에 넣어주고, 연산자가 *, / 이.. 2023. 8. 25.
Pageable 이용한 페이징 게시판 목록조회에 페이징을 적용해보자. Repository Spring Data JPA 에서는 Pageable 기능을 지원해주기 때문에 아주 손쉽게 페이징을 할 수 있다. findAll 메서드를 사용하고 우리는 Pageable만 만들어서 넘겨주면 되는것이다. 한번 구현해보자. 먼저 Repository에 메서드를 생성 해준다. public interface BoardRepository extends JpaRepository { Page findAll(Pageable pageable); } Service public Page findAll(Pageable pageable) { int page = pageable.getPageNumber() - 1; // Pageable은 내부적으로 0부터 시작하기때문에 싱크.. 2023. 8. 13.
[Spring Boot] Spring Boot 프로젝트 리팩토링하기 - (1) 1년전 만들었던 프로젝트의 코드를 리팩토링 해보고자 한다. 해당 프로젝트는 서울 명소 소개 페이지였는데, 오랜만에 열어보니 리팩토링할 부분들이 많이 보였다. 하나씩 고쳐보도록 하자. 1. JPQL > Spring Data JPA + QueryDSl 기존 코드는 아래와 같이 되어있었다. public interface TripRepository extends JpaRepository { // @Query(value = "select a.bno b.img_name, b.path, b.uuid" + // "from Trip a" + // "right outer join trip_image b on a.bno = b.trip_bno",nativeQuery = true) // @Query(value = "selec.. 2023. 8. 7.
[Softeer] 바이러스 - JAVA 바이러스 문제 바로가기 풀이 음.. 값이 21억을 초과할 수 있으니 Long 타입으로 받으면 된다. 그 외에는 딱히 설명이 필요 없을 것 같다. import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); long K = Long.parseLong(st.nextToken()); long P = Long.parseLong(st... 2023. 8. 3.
[Softeer] GBC - JAVA GBC 문제 바로가기 풀이 구현 문제이다. 엘리베이터의 속도를 계산해서 테스트 중일때 제한속도를 초과할 경우 가장 큰 값을 구해주면 된다. 크게 3가지 경우가 있다. 1. 제한속도 체크 구간의 길이가 테스트 구간 길이보다 작을경우 2. 제한속도 체크 구간의 길이가 테스트 구간 길이보다 클 경우 3. 두 개가 같을경우 위에 경우의수에 알맞은 구현을 해주면 된다. import java.util.*; import java.io.*; import java.util.stream.IntStream; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new .. 2023. 8. 3.
[Softeer] 회의실 예약 - JAVA 회의실 예약 문제 바로가기 풀이 소프티어 lv2 문제중엔 가장 어려운듯?.. 로직자체는 간단하지만, 구현이 꽤 복잡하다. 먼저 2개의 컬렉션이 사용한다. 1. mettingRoomList -> 단순히 회의실의 이름을 저장하는 리스트 2. reservationManageMap * Key: 회의실 이름 * Value : 예약한 시간을 나타내는 boolean 배열 map에 저장을 할때는 회의 시작 시간부터 회의 종료 시간까지 순회하며 값을 true로 바꿔줬다. (종료시간은 포함하지 않는다. 문제에도 나와있지만, 종료시간과 시작시간은 겹칠 수 있기 때문이다.) 그후 회의실 이름을 정렬 후 map에서 순회하며 StringBuilder에 값을 넣어주면되는데, 이 과정이 좀 복잡했다... 나머지는 아래 코드 참조.... 2023. 8. 3.