공부 기록

    BOJ 3079 - 입국심사

    BOJ 3079 - 입국심사

    문제 https://www.acmicpc.net/problem/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 상근이와 친구들 M명 (1 ≤ M ≤ 10억) 입국심사대 N개 (1 ≤ N ≤ 10만) k번 심사대에 앉아있는 심사관이 한 명을 심사를 하는데 드는 시간은 Tk (1 ≤ Tk ≤ 10억) 모든 사람이 심사를 받는데 걸리는 시간이 최소가 되도록 아이디어 ' 최소 '라는 키워드가 나와서 이분탐색으로 먼저 접근해보았다. 원래 문제 N개의 심사대에 M명의 사람이 심사받을 때 모든 사람..

    selecte 및 paging 테스트

    http://localhost:8000/blog/dummy/user/page?page=0 일단 application.yml에서 ddl-auot를 update로 수정해서 테이블이 drop되는 것을 막는다. findById findById는 User 타입이 아닌 Optional 타입으로 return해준다. 만약 user/4를 찾을 예정인데 DB에서 못찾게 되면 user가 null이 될 것이다. 그럼 return할 때 null이 return될 텐데 이러면 프로그램 자체에 에러가 생긴다. 그래서 Optional로 user 객체를 감싸서 가져와서 null인지 판단 후 return하면 된다. .get() User user = userRepository.findById(id).get(); null이 절대 return..

    insert 테스트, enum 사용법

    insert 테스트, enum 사용법

    더미 데이터로 insert 연습 join username, password, email만 사용자로부터 받으면 된다. id, role, createDate는 자동으로 들어갈 것이다. @RequestParam @RequestParam("가져올 데이터의 이름") [데이터 타입] [가져온 데이터를 담을 변수] @RequestParam을 생략하고 변수명을 일치하도록 적어도 동일하게 동작한다. // 회원가입 성공 유무만 응답하면 되니까 @RestContoller @RestController public class DummyControllerTest { // insert할 예정이므로 @PostMapping으로 해주고 주소를 설정한다. // http://localhost:8000/blog/dummy/join (요청) ..

    JSON

    영국인이 한국인에게 한 말을 이해하려면 한국인이 영어를 공부해야 한다. 마찬가지로 다른 언어권의 말을 이해하려면 그 언어를 공부해야 한다. 이런 비효율적인 공부를 줄이기 위해 만국 공용어를 정한다. 만국 공용어로 영어를 정했다면 전 세계가 영어만 공부하면 통신이 가능하다. 모든 사람들은 데이터를 전송 시에 자신의 언어를 만국 공용어인 영어로 번역하고, 데이터를 응답받을 때에는 영어를 자기 나라 언어로 번역하면 된다. JAVA에서 파이썬으로 Java Object를 하나 보낸다고 했을 때 이해하지 못한다. 그래서 위의 영어처럼 공용어를 만들었는데 그 것이 JSON이다. Java가 Java Object를 JSON 데이터로 보내면 파이썬이 JSON 데이터를 파이썬으로 번역해서 파이썬 Object로 받는다. JS..

    BOJ 6236 - 용돈 관리

    BOJ 6236 - 용돈 관리

    https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net N일 동안 사용 (1 ≤ N ≤ 100,000) 통장에서 M번만 출금 (1 ≤ M ≤ N) i번째 날에 이용할 금액 (1 ≤ 금액 ≤ 10000) 현우가 통장에서 인출할 최소 금액 K 값은? 아이디어 ' 최소 ' 키워드가 나왔으므로 이분 탐색으로 먼저 접근해보았다. 원래 문제 N일동안 통장에서 M번만 출금할 때 한번에 인출할 최소 금액 K 값은? 최소 금액 K를 매개 변수로 설정하고 문제를 뒤집어서 Y..

    BOJ 2343 - 기타 레슨

    BOJ 2343 - 기타 레슨

    문제 https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 블루레이 N개의 강의 (녹화 순서 준수) (1 ≤ N ≤ 100,000) 블루레이 M개 (모두 같은 크기) (1 ≤ M ≤ N) 기타 강의 길이 리스트 - 분 단위로(자연수)

    연관관계의 주인

    연관관계의 주인

    연관관계의 주인을 명확히 알아야 클래스 설계를 마무리할 수 있다. 연관관계의 주인이란 FK를 가진 오브젝트를 뜻한다. 웹 프로그램을 실행하면 다음과 같은 화면이 나올 것이다. Mybatis와 같은 예전 방식이었다면 User, Board, Reply를 Join해서 Select해서 해당 페이지의 데이터를 다 들고왔을 것이다. 근데 ORM 방식을 사용하면 되게 간단하게 Board 테이블만 Select하면 된다. Select * From Board where Id=1; 이렇게만 해주면 JPA가 Id가 1인 Board 모델이 필요하다는 것을 인식하고 Board가 들고있는 user 오브젝트 정보를 DB한테 User와 Board를 JOIN한 문장을 날린다. 이러면 DB는 그에 대한 정보를 JPA에게 다시 돌려준다. ..

    BOJ 2110 - 공유기 설치

    BOJ 2110 - 공유기 설치

    문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 수직선 위 N개의 집 (2 ≤ N ≤ 200,000) 각 집의 좌표 xi (0 ≤ xi ≤ 10억) 공유기 C개 (2 ≤ C ≤ N) 아이디어 집이 5개이고 공유기가 3개인 경우 C개의 공유기를 몇몇 집에 설치할 것인데 가장 인접한 공유기 사이의 거리를 최대가 되도록 설치할 것이다. ' 최대 ' 라는 키워드가 나왔으므로 이분탐색을 먼저 생각..

    Blog 테이블 생성 - Board

    Board 테이블 @Entity @Data @NoArgsConstructor @AllArgsConstructor @Builder // 빌더 패턴 public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment private int id; @Column(nullable = false, length = 100) private String title; @Lob private String content; @ColumnDefault("0") // 문자가 아니니까 ' '를 붙여줄 필요가 없다. private int count; // 조회수 @ManyToOne @JoinColumn(name = "userId") ..

    BOJ 2512 - 예산

    BOJ 2512 - 예산

    https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 지방의 수 N (3