전체 글11 [BOJ 1202 보석도둑 java] 우선순위 큐 말고 다른 방법 https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 이 문제의 풀이 계획 보석을 가치는 높고 가치가 같다면 무게가 낮은 순으로 정렬을 한다. 보석을 순회 하면서 넣을수 있는 가방 중에 가장 무게가 낮은 가방을 고르면 된다. 2번이 일반적인 풀이는 우선순위큐를 사용해서 쓸 수 있는 가방을 계속 넣었다 빼줬다 하면서 풀 수 있다. 여기서 나는 이진탐색 + union-find 의 find 알고.. algorithm 2023. 2. 16. 백준 - 1987 ( dfs, backtracking, bitmask ) https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net (0,0) 부터 중복을 체크하면서 탐색하는 전형적인 탐색문제다. 나는 DFS로 접근해서 풀이하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[][] m.. algorithm 2022. 12. 8. junit5 repository 테스트 데이터 한 번만 setup(insert)하기 다양한 필터링의 조회 검색 기능을 만들게 되었다. 그리고 테스트하기 위해서는 많은 insert문을 실행하는 setup 메소드를 만들게 되었는데 문제가 생겼다. 실제 dataSetup코드.. public void dataSetup() { Member aMember = memberRepository.save(Member.builder().email("www.a.com").nickname("aaaa name").profileImage("image").build()); Member bMember = memberRepository.save(Member.builder().email("www.b.com").nickname("bbbb name").profileImage("image").build()); Member c.. spring 2022. 9. 18. (Spring) Stomp로 채팅 동시접속자 구현해보기 팀 프로젝트에서 채팅에 동시접속자를 데이터를 실시간으로 보내달라는 요청이 왔다. 동시접속자를 어떻게 실시간으로 보내야할까.. 많은 고민을 했고 구글링을 해봤는데 자료가 거의..없었다. 생각해본 문제는 이정도였다. 1. 실시간으로 빠르게 바뀌는 데이터다 보니 웹소켓으로 전달해줘야 한다. 2. 일단 소켓에 연결된 세션의 수를 알아내야한다. 3. 접속자가 새로 들어올 때와 기존 접속자가 나갈 때마다 데이터를 전달해야한다. 1. 실시간으로 빠르게 바뀌는 데이터다 보니 웹소켓으로 전달해줘야 한다. 1번의 경우는 이미 소켓에 연결되어있는 상태이기 때문에 새 subscribe 채널만 제공해주면 된다. function connect() { var socket = new SockJS('http://localhost:80.. spring 2022. 9. 10. 디자인패턴 - 싱글톤패턴 ( java ) singleton이 왜 필요할까? singleton이 해결하려는 문제는 다음과 같다. 클래스의 인스턴스가 1개임을 보장하고 싶다. 인스턴스 생성을 제어할수 있어야한다. 1개뿐인 인스턴스에 쉽게 접근할 수 있어야 한다.(글로벌 객체) 위키백과에서 싱글톤 클래스 다이어그램의 예시를 보여주고있다. 특이점은 현재클래스를 필드변수로 선언하고 생성자는 private으로 외부에서 사용할 수 없고 유일한 public 접근자인 getInstance 메소드로 필드변수에 생성된 인스턴스를 얻을 수 있다. 언뜻 보기만 해도 이렇게하면 싱글톤이 유지될 것 같다. public class Singleton1Basic { /* * 인스턴스를 클래스 내부 필드에서 생성 * */ private static volatile Singlet.. design pattern 2022. 8. 24. Jpa 연관관계 정리 연관관계를 매핑한다? 일반적으로 DB에서 테이블의 연관관계를 매핑할 땐 외래키를 사용하고 양방향관계를 사용한다. select * from team t join member m on t.team_id = m.team.id; select * from member m join team t on m.team.id = t.team_id; 이와 같이 하나의 외래키로 양방향 매핑이 되어 양방향 조회가 가능하다. 하지만 ORM에서 객체는 참조를 사용하여 매핑하고 방향성이 존재한다. @Entity() @Table(name = "MEMBER") public class Member { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) p.. jpa 2022. 8. 22. ORM과 JPA 개념정리 ORM (Object Relation Mapping)란 무엇일까? 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주는 것을 말한다. database와 OOP를 둘 다 잘 알고 있어야 한다. 기존 database SQL을 직접 다룰 때의 문제점 코드의 반복이 발생함, 예를들어 insert into(...) ... 계속 반복 SQL에 의존적인 개발을 하게됨. 로직을 쿼리로 처리하게 되는 경우가 생김. 쿼리가 길어지면 가독성도 떨어지고 무엇보다 테스트를 하려면 쿼리를 날려야한다.. 유지보수성 - 테이블에 변경이 있다면, 연관된 모든 쿼리를 변경해줘야 함. 특정 db벤더사에 의존하게 됨. DB종류마다 약간 씩 문법도 다른 경우가 존재. 중간에 DB를 바꾸게되면 골치아픔. ORM과 RDB의 차이 ORM R.. jpa 2022. 8. 15. 스프링부트 @WebMvcTest 중 MockMvc 빈 주입이 안될 때 @WebMvcTest로 컨트롤러 테스트를 짜려고 보니! @WebMvcTest(DiaryController.class) class DiaryControllerTest { @MockBean private DiaryService diaryService; @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; //... could not autowire. no beans of 'mockmvc' type found. 라는 에러가 떴다. MockMvc랑 ObjectMapper 둘 다 빨간줄이 뜨는데 실행은 잘 된다. 여러가지 시도를 해보았지만 해결이 안 되었다.. 뭐가 문제일까? What versions of Spring B.. intellij 2022. 7. 27. Optional의 올바른 사용 방법 Null이란? 참조타입 변수에 값이 할당되지 않은 것. Production Java Applications에서 NullPointerException는 가장 많이 발생하는 에러라는 결과도 있었다. 매번 회피 로직을 넣어야 하기 때문에 번거롭고, 컴파일 타임에 에러가 발견되지 않을 수 있기 때문에 리스크가 있다. Optional Null을 다루는 방법으로 jdk 1.8에서 추가된 객체이다. Null을 직접 핸들링하지 않아도 된다. 타입만으로 잠재적으로 null일 수 있는 여부를 나타낼 수 있다. 체이닝을 통한 중단 및 종단처리가 가능하다. - oracle docs API Note: Optional is primarily intended for use as a method return type where th.. java 2022. 7. 25. java는 call by reference 일까 call by value 일까? 처음 파라미터에 전달에 대해서 알게될 때는 call by reference는 주소값을 전달하는 것이고 call by value는 값만 전달하여 파라미터로 전달 받으면 값을 수정해도 호출한 메소드에서는 영향이 없는 것으로 어렴풋이 알고 있었어서 헷갈렸다. 자바는 알다시피 primitive type이 아닌 reference type의 데이터를 보낼 때는 주소값을 전달해서 전달한 데이터의 주소값에 접근하면 얼마든지 수정이 가능하다. 그럼 자바는 call by reference도 되는거 아닌가? 라고 헷갈릴 수 있다. 그럼 reference는 뭐고 value는 뭘까? reference : 참조,참조자 라는 의미이고 말 그대로 변수를 참조하는 녀석이고, 변수에 별명을 붙인다고 표현한다. value는 : 말그대로 .. java 2022. 7. 13. intellij- servlet 프로젝트에서 jsp out객체 사용하기 인텔리제이로는 servlet 프로젝트를 만들어도 이클립스와는 다르게 jsp라이브러리들을 추가해 주지 않는다. 그래서 out객체 같은 jsp 기본 객체들을 사용할 수가 없었음. 그래서 javax.servlet.jsp javax.servlet.jsp-api 2.3.3 provided 직접 추가 해줘야 함. 프로젝트 생성 시 주는 javax.servlet에 포함이 안 되나보다.. jsp 2022. 5. 27. 이전 1 다음