전체 글 405

[백준 15810번] 풍선 공장 - java

문제 설명 1. N명의 스태프, 만들어야 하는 풍선M이 주어진다. 2. 각 N명의 스태프가 1개의 풍선을 부는 데 들어가는 시간이 주어진다. 3. M개의 풍선을 만드는 최소시간을 구하라 풀이 과정 1. 이분탐색이다. 2. 이분탐색 -> Long타입에 주의하자...허헣 풀이방법 자체는 이전하고 별반 차이는 없다. - 몇 분의 시간이 주어지고, 해당 시간동안 몇개의 풍선을 불 수 있는지 구하면 된다. 3. 왼쪽 -> 0으로 시작하면 된다. 4. 오른쪽 -> 풍선 부는데 제일 오래걸린 시간 * 풍선 개수면 일단 가장 오래걸리는 시간이 구해진다. 5. 만약 3, 5, 6분마다 한개씩 풍선을 만든다고 가정하면 7분이 주어지면 각각 2, 1, 1개를 만들것이다. 6. 현재 시간에 분 최대 풍선개수가 원하는 개수보다..

알고리즘 공부 2022.03.26

[백준 2792번] 보석 상자- java

문제 설명 1. 인원수 N, 보석의 색깔수 M이 주어진다. 2. M가지 색에 대해 각각의 개수가 주어진다. 3. 이 M개의 보석을 N명의 학생에게 나누어 줄 때, 모든 인원에게 나누어 줄 수 있는 최소 보석 개수를 구해주면 될것이다. 풀이 과정 1. 이분탐색이 어려워서 공부하기 위해 하나 더 풀어보았다. 이전문제에서 공부했어서 풀이 자체는 금방 도출했는데... 이번에는 뭔가 구현이 어려웠다. 더 풀어봐야 할 것 같다. 2. 중요한 값들에 대해 이야기하자면 A. 주어지는 보석개수의 차이가 아니라 개수 자체에 관한 문제라는것 -> 그냥 보석을 N명에게 모두 나누어 줄 수 있는 최소개수를 가지면 된다. B. 아예 보석을 못받는 학생이 있어도 괜찮다는것 -> 학생수보다 주는보석방법의 개수가 작거나 같으면 싹다 ..

알고리즘 공부 2022.03.26

[백준 2343번] 기타 - java

문제 설명 1. 강의의 수 N, 블루레이 녹화 개수 M이 주어진다. 2. N에 맞추어 강의가 하나씩 주어진다. 3. N개의 강의를 M개로 나누어 저장할 수 있는 가장 최소의 분단위를 구하면 된다. 풀이 과정 1. 이분 탐색 문제이다. 실버1 난이도인데 나는 왜이리 이분탐색이 어려운지 모르겠다... 2. 중요한 값들에 대해 이야기하자면 A. N개의 강의를 M개로 나누어 담는다는것 -> 한 개의 블루레이의 크기를 늘리고 줄이며 담을 수 있는 강의를 만들어가면 될것. B. 블루레이는 모두 같은 크기를 갖고, 최소의 크기로 만들어야 한다는것 -> 이분탐색을 M개의 값을 갖자마자 나가지 말고 그 최소를 구할것 이다. 3. 먼저 M은 N보다 작거나 같으므로 최소 블루레이 크기는 최대 길이 강의로부터 시작할 것이다...

알고리즘 공부 2022.03.26

[백준 4179번] 불! - java

문제 설명 1. 미로의 크기 R, C가 주어진다. 2. 불이 나고, 지훈이가 미로안에 있다(지훈이는 한명) 3. 불과 지훈이가 상하좌우로 움직일수 있고 지훈이는 불과 벽을 뛰어넘지 못한다. 4. 지훈이가 미로를 탈출(가장자리 도착)하는 가장 짧은 방법을 구하라. 풀이 과정 1. BFS에 약간의 구현을 더해서 진행하는 문제이다. 2. 먼저 둘이 동시에 이동한다 가정해보면 코드상에서는 지훈이의 이동보다 불의 이동이 먼저 일어나야 하는데, - 코드에서 지훈이가 불보다 먼저 움직이면 이후에 타죽는다. - 불이붙은 지역에 지훈이는 갈 수 없다. 그러므로 지훈이를 불보다 늦게 움직이도록 생각한다. 3. 지훈이는 미로의 가장자리에 있으면 탈출 가능하다. 즉 처음부터 가장자리에 있으면 그냥 탈출하면 된다. 4. 지훈이..

알고리즘 공부 2022.03.20

디프만 11기 면접 후기

신입 개발자로 취직하기 위해서 준비해야 하는것이 무엇이 있을까? 요즘 기업들은 코딩테스트를 많이 보기 때문에 알고리즘 관련 공부를 해야 할 것이고, 면접을 위한 CS나 개발 내용을 알아야 할 것이다. 그런데 최근들어 여러 대기업에서 코딩테스트보다는 포트폴리오에 더 관심을 많이 두는 것 같다. 그렇기 때문에 내 실력을 어필할 수 있는 포트폴리오가 중요할 것이다. 또, Git과 같은 형상관리 사용법을 알고 있는지, 다른 사람들과 어떻게 의사소통하여 프로젝트를 하는지 등 협업에 관한 요구도 많을 것이다. 이때에 가장 도움이 되는것이 바로 개발자 동아리라고 생각한다. 디프만은 [디자이너와 프로그래머의 만남] 의 줄임말로 말그대로 디자이너와 프로그래머가 함께 프로젝트를 진행하는 동아리이다. 서류 접수 서류는 자기..

[백준 2302번] 극장좌석 - java

문제 설명 1. 좌석의 개수가 주어진다. 2. 각 좌석은 자신의 양옆으로 이동 가능하며, VIP는 이동이 불가능하다. 3. VIP의 위치가 주어질 때 가능한 좌석의 전체 방법 수를 구하여라 풀이 과정 1. DP를 통해서 풀 수 있다. 2. 좌석을 한 칸씩 늘려가며 방법을 구해주면 점화식을 세울 수 있다. 먼저 VIP석이 아예 없는 경우를 예를 들어 1칸 -> 1개 2칸 -> (1 2) (2 1) 2개 3칸 -> (1 2 3) (1 3 2) (2 1 3) 3개 4칸 -> (1 2 3 4) (1 3 2 4) (2 1 3 4) / (1 2 4 3) (2 1 4 3) 5개 .... 이렇게 된다. 4번째 칸을 기준으로 구할 때에는 -> 3칸을 구하는 방법 뒤에 4번째 위치 / 3으로 끝나는 좌석을 4와 위치를 바..

알고리즘 공부 2022.03.03

JPA가 무엇일까?? 왜 쓸까??

JPA란 Comment 과거에는 SQL을 하나씩 작성하던 것을 JPA가 나타난 후부터는 코드로 작성할 수 있게 해 주었다. 그럼 JPA가 그에 맞는 sql을 실행해 준다. 속도, 생산성과 유지보수 등에서 훨씬 빨라졌다. 다만 난이도가 어렵다. 실무에서는 JPA를 사용하면 굉장히 어렵다. JPA는 다른 것들에 비해 객체와 테이블을 잘 설계하고 매핑을 해야 한다. JPA의 내부 동작 방식을 모르고 쓰는 경우가 많다. JPA가 어떤 SQL을 만들어 내고, 언제 실행하는지 이해해야 한다. 기존 SQL을 사용하는 문제점 개발 언어는 주로 객체지향 언어이다 + DB는 주로 RDB(관계형 DB)를 사용한다 => 즉, 객체를 관계형 DB에 관리한다. SQL중심적인 코딩의 문제점 일단 지루함. 코드 완성 후 변경사항이 ..

이론 정리/java 2022.03.01

Spring boot를 통한 REST API구현 - 이론(3)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(3)에 관한 이론과 내용들에 관한 글이다. 관련 내용 1. Lombok 개념 Lombok이란, 반복해서 사용되는 Annotation을 하나로 묶어서 자동으로 작성해주는 라이브러리이다. 자주 쓰이는 내용들을 한꺼번에 적용할 수 있고 긴 코드를 줄여주기 때문에 생산성에 큰 도움이 되지만, 생각보다 큰 단점이 존재한다. 이 단점에 관해서는 이후에 단점이 발생하게 되는 타이밍에 다시 적겠다. 이게 꼭 그 상황이 터져야 비로소 이해하게 되는 것 같다. 사용 @Data @Getter / @Setter / @ToString / @EqualsAndHashCode / @RequiredArgsCo..

Spring boot를 통한 REST API구현 - 실습(3)

Spring boot로 간단한 rest api를 구현하여 보자!! DTO를 사용한 값 전달, default설정 등 DTO를 사용한 값 세팅 및 전달하기 default값 설정과 required 설정하기 DTO생성 해당 위치에 UserInfoDTO라는 java class를 하나 생성해 준다. import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor public class UserInfoDTO { private String name; private String email; } 해당 클래스의 코드는 다음과 같다. 참고로 여기서 @Data, @NoArgsConstructor을 사용하려면 lombok을 import해줘야 할 것이다. ..

Entity, DTO의 차이와 사용 이유, 개념

Entity, DTO가 뭐지? 분리해서 쓰라고? 개인적으로 생각할 때에 처음 Spring boot를 배울 때 가장 개념이 잡히지 않는 것들 중 하나가 DTO, Entity일 것이라 생각한다. 특히 처음에 볼 때는 걍 Entity를 쓰니까 다 되는데 왜 굳이 이거 두개를 나누지? 라는 생각을 할 수도 있을 것이라 생각한다. 이 글에서는 이 두 가지의 간단한 개념과 나누는 이유, 사용 방법에 대해 기술한다. Entity란? Entity란 DB의 테이블에 존재하는 Column을 필드로 갖는 객체이다. 여기서 중요한 점은 DB테이블과 관련이 있다는 점이다. 즉, Entity는 DB테이블과 소통하는 데에 사용하는 것이다. DTO란? Data Transfer Object라는 뜻이다. DTO는 계층 간 데이터 교환을..

이론 정리/java 2022.02.28