https://www.acmicpc.net/problem/21940 21940번: 가운데에서 만나기 위 조건을 만족하는 도시 $X$의 번호를 출력한다. 만약 가능한 도시 $X$가 여러 개인 경우는 도시의 번호를 오름차순으로 출력한다. www.acmicpc.net 🐢문제 친구들과 만나기 위한 중간 지점을 구해야하는 문제이다. 양방향 그래프가 아닌 단방향 그래프이고, 주어진 친구 위치에서 다른 모든 정점으로 도로가 있는 것이 아니므로 주의해야한다. 각 친구 위치에서 모든 정점을 중간위치 x로 놓고 비교해서 특정 x일 때 왕복거리가 가장 높은 값이 가장 낮도록 하는 x를 구하면 된다. 🐢해설 x를 구하기 위해서 다익스트라 방법과 플로이드와샬 방법을 사용할 수 있는데, 단방향이므로 친구들의 위치에서만 다익스트라..
https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 🐢문제설명 베낭에 최대한의 이익을 내면서 담는 것이 목표인 문제인데, 이러한 유형을 냅색 문제라고 한다. 냅색 문제는 대부분 dp로 풀면 되는경우가 많다. 이번 문제 또한 대표적인 냅색 문제이므로 dp로 풀어보자. 🐢풀이법 먼저 베낭에 담을 수 있는 최대 무게만큼 배열을 선언해 준다. 그러면 배열의 각 인덱스는 베낭에 담긴 무게가 ..

DAO DAO : Data Access Object의 약어로 DB에 접근하여 조회, 조작을 담당하는 것들을 통칭한다. DAO를 이용해서 Service와 DB를 이어주는 중간다리 역활을 한다. Persistence Layer이다. (DB에 직접 CRUD를 하는 계층) 왜 DAO로 구분하는 것일까? HTTP Request를 Web App이 받게 되면 매 Req마다 WAS에 전달이되면 매칭되는 Servelt이 메모리에 적재되고, servlet내 Service() 메소드가 호출되어 Thread Pool에 있는 쓰레드를 할당받아서 처리된다. | 이때, 비즈니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 Driver를 로드하고 Connection 객체를 생성하게 되면 엄청 많은 커넥션이 일어나므로 DB에 전담하..

환경 : springboot + thymeleaf + h2(DB) 목적 회원가입시 주소를 입력해야하는데 이를 위해 카카오에서 제공하는 도로명 주소 API를 사용해보려 한다. 카카오 도로명 주소 API https://postcode.map.daum.net/guide Daum 우편번호 서비스 우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다. postcode.map.daum.net 기본적으로 주석까지 자세하게 달려서 제공되고 있으므로 천천히 읽어보자 필자는 "사용자가 선택한 값 이용"을 선택해서 사용해 보겠다 기본 Address객체 클래스 @Embeddable @Getter public ..
https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 모든섬들에 대해서 자신을 제외한 모든 섬들에 대한 다리를 만들고 최소값을 비교하면 최대 섬의 개수 100개일 경우 100 * 99 .. 로 100!의 경우가 나온다. 따라서 이러한 방법이 아니라 100개의 섬에 대해서 각각 다른 섬을 찾으면서 다리를 놓다가 아무 섬이든 닿으면 최단거리 다리길이 값을 갱신하고 이 이상값이 나올경우 제외하는 방법으로 하면 더 빠르게 풀수 있다. 참고로 최단 거리다리를 찾아..
https://www.acmicpc.net/problem/2539 2539번: 모자이크 수찬이는 선생님을 도와서 교실 벽면을 장식할 모자이크 그림을 그리기로 하였다. 이를 위하여 직사각형 모양의 큰 도화지를 준비하여 교실 벽에 붙이고 1cm 간격으로 가로선과 세로선을 그려서 www.acmicpc.net 이분탐색 문제를 풀어보고 있는데 항상 이분탐색에서 부등호 처리가 헷갈려서 정리해본다 이분탐색에서 범위설정하는 경우를 나눠본다면 1) 원하는 값에 부합하는 경우가 유일한 경우 2) 원하는 값에 도달하더라도 가능한 값이 더 존재할 수 있어서 하한값을 높여가며 값에 해당하는 마지막 부분을 찾는 경우 - 최대 이익 3) 원하는 값에 도달하더라도 가능한 값이 더 존재할 수 있어서 상한값을 낮춰가면서 값에 해당하는 ..
기본적으로 운영환경과 테스트환경은 별도로 두는것이 좋다 웹 서비스의 DB로 h2를 사용해서 구현하고 있지만 테스트시에는 h2를 이용하지 않고 메모리 DB를 이용해서 테스트를 실행할 때 로컬 메모리로 저장해서 테스트 후 종료될 때 전부 삭제되는 방식으로 구현한다 방법 springboot의 test폴더 내에 resources폴더와 하위파일로 application.yml을 생성 spring: # datasource: # url: jdbc:h2:mem:test //해당 url을 이용하면 메모리모드로 테스트를 돌려준다 # username: sa # password: # driver-class-name: org.h2.Driver # # jpa: # hibernate: # ddl-auto: create # prope..
스프링 부트에서 Junit으로 테스트를 진행할 때 예외케이스를 테스트하는 경우 Junit4의 경우 @Test (expected = IllegalStateException.class) public void duplicatedMemberException() throws Exception { //given Member member1 = new Member(); member1.setName("mem1"); Member member2 = new Member(); member2.setName("mem1"); //when : 동일한 이름의 회원이 저장될 경우 IllegalStateException 발생 memberService.join(member1); memberService.join(member2); } 예외가 ..

Application Layer - protocol stack의 가장 위에 존재한다 - 사용자가 직접 사용하는 protocol - 다양하고 시대에 따른 변화가 크다 Protocol 관점에서의 application - socket(SAP)을 통해서 Transport Layer와 소통한다 - application layer가 존재하는 end-system 끼리 소통하는 것 - socket의 건너편은 상대방 end-system socket Application Architecture - Client-Server vs. Peer-to-Peer(P2P) Process and Socekt Process end system의 OS상에서 동작하는 프로그램 객체 - 서로 다른 Process끼리 Message를 주고 받으면..
객체지향 디자인 패턴 - 객체지향 프로그램이 복잡해지면서 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴이다 - 여러 사람이 협업할 때에는 버그를 발생시키기 쉽고 성능을 최적화 시키기도 어렵다 생성패턴 - 팩토리, 빌더, 싱글톤 구조패턴 (객체 결합 패턴) - 파사드 행위 패턴 (객체 간 커뮤니케이션) - 반복자 팩토리 패턴 - 상위 클래스와 하위 클래스가 있을 때, Factory Class를 사용하여 하위 클래스의 인스턴스를 생성한다 - Cat -> Animal, Dog -> Animal public class AnimalFactory { static Animal create(String str) { if (str.equals("Dog")) return new Do..

Layer 4 Overview End-to-End data 전송을 위한 logical communication 역활 Connection-oriendted(TCP) vs. Connectionless(UDP) IP 및 PORT 번호로 식별 예시 우편을 전달한다고 할때, 건물 to 건물로 전달하는 것은 host to host로 Network Layer의 역활이고, 각 건물에서 우편을 사람 to 사람으로 전달하는 역활은 port to port로 Transport Layer의 역활이다 IP 계층에 대한 다양한 제어 동적 IP 주소 관리 IP 변환 (NAT) IP packet 흐름 제어 Transport Layer 종류 Application에 따라 두가지 프로토콜 중 한가지를 사용한다 User Datagram Pr..

Routing Control Plane Router내의 Data / Control Plane 동작 성격 (Data forwarding / routing)에 따라 기능이 나뉘어진다 Data plane IP header 분석 Datagram Forwarding Fragmentation (MTU - Maximum Transport Unit) Control plane Routing algorithm ICMP (Internet Control Message Protocol) Routing Algorithm Routing의 forwarding Table == Routing Table 입력받은 Datagram에 대한 출력 port를 정하기 위해 각 Router가 보유한 표 어디로 Datagram을 보내야하는지 적혀있는..
- Total
- Today
- Yesterday