일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준#boj#12755
- 백준#BOJ#1939#중량제한
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#boj#16932#모양만들기
- 백준#BOJ#2615#오목
- 백준#BOJ#12865#평범한배낭
- Today
- Total
목록분류 전체보기 (249)
순간을 성실히, 화려함보단 꾸준함을
안녕하세요. 오늘도 역시 토이 프로젝트를 진행하다가 발생한 문제점을 가져와서 해결했던 점을 포스팅 해보도록 하겠습니다. 먼저 구조부터 설명하자면, 현재 로그인 기능을 구현하기 위해서 HttpSession 에 회원의 정보들을 담을려고 합니다. 그리고 이 session에 담긴 '권한'으로 이 회원이 어디까지 '인가'될 수 있는지 판단해 주는 로직을 구현하려고 하는 중입니다. 맴버 Entity package boomrabbit.logintest.mvc.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.HashMap; import java.util.Map; @E..
김영한님 강의를 듣고 난 후 코드를 작성하고 실행시켰더니 이런 에러메세지가 출력이 되었다. 재미난 부분인데 왜 이런 메세지가 출력이 되는 것 일까? 먼저 코드부터 살펴보자 package jpabook1.jpashop.api; import jpabook1.jpashop.domain.Member; import jpabook1.jpashop.service.MemberService; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import ..
https://www.acmicpc.net/problem/24039 24039번: 2021은 무엇이 특별할까? 백준 온라인 저지의 송년대회 Good Bye BOJ, 2021!의 개최일은 2021년 12월 31일이다. 원이는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2021이 무언가 특별하다는 사실을 깨달았다. 그렇 www.acmicpc.net 해설 : 단순 소수들만 뽑아주면 됩니다. sqrt(n)을 사용해서 소수 판정을 해주던가 뭐 에라토스체네스의 체를 사용해서 걸러주던가 하면 됩니다. 제한 범위가 10000밖에 안되니 절대 시간초과가 날 일은 없겠죠. #include using namespace std; using ll = long long; bool prime[10010]; void so..
https://www.acmicpc.net/problem/23563 23563번: 벽 타기 출발하자마자 오른쪽으로 한 칸 이동하고, 위로 한 칸 벽을 타고 이동하면 총 1의 시간이 소요된다. www.acmicpc.net 해설 : 루시우가 한칸 움직일때마다 1초씩 시간이 늘지만 벽을 타면 0초라는 걸 보고 일반적인 BFS 문제로는 풀기 힘들지 않을까? 라는 의문점을 가져야 합니다. 결국 이건 쉽게 생각해보면 간선의 가중치가 일정하지 않는 그래프에서 최단거리를 구하는 문제이니 그냥 다익스트라 문제입니다. 문제에서 나와있는 조건대로 코드를 작성해주면 됩니다. 벽을 타고 지나가는 부분만 조심히 잘 처리해주면 되겠군요. #include using namespace std; using ll = long long; ..
스프링부트를 사용하여 개발할때 우리는 의존성 주입을 위해 @RequiredArgsConstructor를 사용합니다. 이때 굉장히 반드시 알고 가야될 개념이 있습니다. 바로 final키워드를 사용한 인스턴스들만 Bean 객체로 등록을 한다는 것 입니다. final 키워드를 사용하지 않고 사용하면 NullPointerException 이 발생합니다. (이점을 반드시 알아두고 기억하시길 바라고 다음 내용으로 넘어가겠습니다) 추가로 더 알아보면 @RequiredArgsConstructor를 왜 사용하는 것일까요???? 우린 의존성 주입(Dependency Injection) 을 사용해서 Bean 객체로 등록된 아이들에게 제어의 역전(Inversion of control) 을 수행하게 됩니다. (의존성 주입과 제..
JPA 를 사용하다보면 가끔 기본적인 개념조차 암기하지 않고 난방하는 경우가 생기는데 절대 이러지 말자!! 중요한건 기본기!! 제목과 같은 오류 메세지를 가끔 확인할 수 있는데 저 오류 메세지의 원인은 간단하다. @Entity,@Embeddable 어노테이션을 사용하면 이 클래스는 테이블과 매핑할 클래스라는 것을 명시해준다. 이때 반드시 기본 생성자(no-arg constructor) 가 필수적이다. 그러니 @NoArgsConstructor 어노테이션을 붙여주던가 아니면 기본생성자를 입력해주자. @Embeddable @NoArgsConstructor //첫번째 방법 public class Address { private String city; private String street; private Str..
https://www.acmicpc.net/problem/14628 14628번: 입 챌린저 입력은 항상 적의 체력을 정확히 0으로 만들 수 있는 스킬의 조합만 들어온다. 첫째 줄에 스킬의 개수 N, 적의 체력 M, 같은 스킬을 사용할 때마다 추가되는 마나 포인트 K가 주어진다. (1≤N,M,K≤10 www.acmicpc.net 해설 : 문제를 이해하는건 어렵지 않습니다. 다만 점화식을 세우는 것이 너무나도 까다롭더라구요.... 여러개의 스킬을 조합해야 하고, 스킬을 사용할 수 있는 제한이 존재하지 않는 것을 통해 unbounded knapsack 문제라고 판단이 들었고 그렇게 점화식을 세웠습니다. 다만 평소에 풀어본 unbounded knapsack 문제는 1차원 배열로 해결하였는데, 1차원으로는 세워..
https://www.acmicpc.net/problem/23562 23562번: ㄷ 만들기 2021년, 냅다 ㄷ 만들기는 한국인의 기본 소양이 되었다. 우리는 앞에 놓여있는 $n \times m$ 모눈종이에 냅다 ㄷ을 그리려 한다. ㄷ 모양은 $k \times k$ 정사각형 7개를 붙인 형태로 정의한다. 다음은 www.acmicpc.net 해설 : 단순 구현문제입니다. 그냥 모오오오오오오오오오든 경우의 수를 전부 해보면 됩니다. 크기가 1인 정사각형부터 시작해서 board 보다 크기가 커질때까지 count 해줍시다. 먼저 #의 개수를 전부 세줍시다.=>black 현재 (x,y) 에서 시작해서 ㄷ 모양을 탐색해 주면서 . 이면 #으로 바꾸어 줘야하니 count 해주고, 답을 갱신할때는 (a*count) ..
오늘 새롭게 알게 된 사실.....자바에서 입출력 할때 입력할때는 Scanner를 사용하지 말아야 된다는 건 알고 있었지만, sysout 또한 사용하면 안된다는 사실을 알 수 있었네요...ㅠㅠㅠ 1)sysout package com.boj.practice; /** * IO Template reference : 류호석 */ import java.io.*; import java.nio.Buffer; import java.util.*; import java.util.concurrent.DelayQueue; import static java.lang.Math.*; public class Main{ static FastReader scan = new FastReader(); public static void ma..
요즘 lambda 와 stream을 사용하는 것에 조금 집중하려고 하는데 이게 자바에서 함수형 프로그래밍을 쓰는게 되게 어렵네요....ㅠ 먼저 Arrays.sort()를 이용해서 정렬한 후에 stream()을 사용해서 출력까지 해보겠습니다. public static void solve() { int []arr = new int[4]; //Integer []arr = new Integer[4]; for(int i=0;iy-x); Arrays.stream(arr).forEach(x-> System.out.print(x)); }딱히 어려운건 없습니다. 오름차순은 이런식으로 하면 됩니다. 그러나 문제는 내림차순을 하는 것인데, Comparator을 사용해서 내림차순을 할 수 있지만 전 lambda를 사용해서 내..
@Transactional 어노테이션은 스프링 프래임워크를 사용할때 굉장히 편리함을 제공해 줍니다. 비지니스 로직 동작에 따라서 데이터베이스에 이를 반영해 줄때, 트랜잭션 처리를 자동으로 수행해 줍니다. begin 과 commit 을 자동적으로 수행해줍니다. 예외 발생시,rollback을 자동적으로 수행해줍니다. @Transactional 어노테이션을 사용할때 주의할 점이 있는데, 바로 junit 환경에서는 @Transactional 을 사용하면 테스트가 끝날때 자동으로 Rollback 이 됩니다. 그래서 쿼리 로그가 보이지 않게 되는 것 입니다. 보통 application.yml 에 분명히 format_sql: true 로 설정해주었음에도 불구하고 쿼리가 안보이는 현상이 발생할 수 있을텐데 @Trans..
https://www.acmicpc.net/problem/23560 23560번: 약 백준이는 $N$일 동안 약을 먹어야 한다. 약은 아침, 점심, 저녁에 한 번씩 먹어야 하고, 한 번 먹는 약은 약 봉투에 담겨있다. 약 봉투는 $3N$개가 일렬로 붙어 있고, {(아침 약), (점심 약), (저녁 약)} www.acmicpc.net 해설 : (다른 분들 코드 보면 그냥 수학적으로 푸셨던데 전 그렇게 못풀었습니다) https://www.acmicpc.net/problem/14677 14677번: 병약한 윤호 프로그램의 입력은 표준 입력으로 받는다. 입력의 첫 줄에는 약을 먹어야 하는 날짜인 N이 주어진다. (1 ≤ N ≤ 500) 두 번째 줄에는 3N개의 약의 상태가 주어지는데, 아침 약은 B, 점심 약은..