전체 글

중요한 것은 꺾여도 그냥 하는 마음
https://www.acmicpc.net/problem/16724 16724번: 피리 부는 사나이 첫 번째 줄에 지도의 행의 수를 나타내는 N(1 ≤ N ≤ 1,000)과 지도의 열의 수를 나타내는 M(1 ≤ M ≤ 1,000)이 주어진다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열이 주 www.acmicpc.net 사용한 알고리즘 : 분리 집합, DFS 풀이 전략 문제에서는 회원들이 발판을 따라 움직인다고 할 때, 회원들이 반복되는 싸이클로 인해 계속해서 발판을 움직이며 돌지않고 중간에 멈출 수 있도록 SAFE ZONE을 만드려고 한다. 이 때 이를 만족시킬 수 있는 SAFE ZONE의 최소 개수를 구하는 것이 목표이다. 풀이 방법이 여러가지 있겠지만, 나는 분리 집합과 ..
https://www.acmicpc.net/problem/16398 16398번: 행성 연결 홍익 제국의 중심은 행성 T이다. 제국의 황제 윤석이는 행성 T에서 제국을 효과적으로 통치하기 위해서, N개의 행성 간에 플로우를 설치하려고 한다. 두 행성 간에 플로우를 설치하면 제국의 함 www.acmicpc.net 사용한 알고리즘 : MST(최소 스패닝 트리) 풀이 전략 전형적인 최소 스패닝 트리를 사용한 문제이다. 그래프의 모든 간선들 중에서 비용이 가장 적은 간선을 하나씩 더해간다. 단, 더해가는 과정에서 싸이클이 발생하지 않아야하며 최종적으로는 모든 정점들이 이어져야 한다. 문제에서 주어진 예제 입력2를 그림을 통해 설명해보겠다. 위 예제에서는 작은 순서 그대로 추가해도 싸이클이 생기는 문제가 없었다...
WAS가 전송하는 데이터 유형 1. 정적 리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 전송한다. 주로 웹 브라우저가 요청하고 전송받음 2. HTML 페이지 동적으로 필요한 HTML 파일을 WAS가 생성해서 웹 브라우저에 전달한다. 주로 웹 브라우저가 요청하고 전송받음 3. HTTP API HTML 파일이 아니라 데이터를 전달한다.(주로 JSON 형식의 데이터) 웹 브라우저 뿐만 아니라 다양한 시스템에서 호출한다.(안드로이드, IOS, React.js 등) 다양한 시스템에서 HTTP API를 사용하여 데이터를 호출하며 UI화면이 필요하면 클라이언트에서 별도로 처리한다. 서버와 앱, 웹 클라이언트 또는 서버와 서버 간에 이 방법의 통신이 많이 사용된다. 렌더링 기법 1. 서버 사이드 렌..
서블릿 위 내용들은 WAS에서 클라이언트로부터 요청이 왔을 때 수행해야하는 로직들이다. 근데 이 모든 로직들을 개발자가 하나하나 설정하기 너무 번거롭다. 이 문제를 해소시켜주기 위해 나온 것이 서블릿으로 서블릿을 사용하게 되면 위 로직들 중 초록색 네모칸 쳐진 비즈니스 로직만 개발자가 작성하면 된다. 서블릿 작동 과정 웹 브라우저로부터 HTTP 요청 시 WAS는 request, response 객체를 새로 생성하고 사용할 서블릿 객체를 호출한다. (호출되는 서블릿은 웹 브라우저가 요청한 URL에 맞게 호출될 수 있는 서블릿이 존재할 경우 호출된다.) request, response 둘 다 개발자가 편리하게 HTTP 스펙을 사용할 수 있도록 만들어진 개체로 request는 HTTP 요청 정보를 편리하게 사..
웹 서버(Web Server) HTTP 기반 동작 정적 리소스, 기타 부가기능 제공 정적(파일) HTML, CSS, JS, 이미지, 영상 등 ex ) APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반 동작 웹 서버 기능 동작 프로그램 코드로 애플리케이션 로직 수행 - 동적 HTML, HTTP, API(JSON) - 서블릿, JSP, 스프링 MVC ex) Tomcat, Jetty 등 웹 시스템 구성1 - WAS, DB WAS, DB만으로 시스템 구성한 상태 WAS는 정적 리소스, 애플리케이션 로직 모두 제공한다. 하지만 WAS가 너무 많은 역할을 담당해 서버 과부하가 걸릴 수 있으며, 정적 리소스 처리보다 복잡한 처리가 필요한 애플리케이션 로직 수행에 제..
https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 사용한 알고리즘 : 자료 구조(List) - 구현 문제 풀이전략 이 문제에서 가장 신경써야할 부분은 명령어로 'R'이 주어졌을 경우 배열을 뒤집느냐 뒤집지 않느냐이다. 만약 'R' 명령이 들어올 때마다 배열 뒤집기를 실행한다면 최악의 경우 시간 복잡도는 아래와 같다. 배열에 들어갈 수 있는 수는 최대 100,000개이고 명령어의 길이 또한 최대 100,000번이 가능하다. 배열 내부의 수가 100,000개 일 때, 'R'로 인해 뒤집기 연산을 수행하면 ..
https://www.acmicpc.net/problem/3584 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net 사용한 알고리즘 : LCA(Lowest Common Ancestor, 최소 공통 조상) 풀이 전략 위 문제에서 주어진 첫 번째 입력을 그래프로 나타내면 아래와 같다. 문제에서는 16과 7의 가장 가까운 공통 조상인 LCA를 구하라고 주어졌다. 결론부터 말하면 눈에 보이듯 4인데, 이를 알고리즘적으로 어떻게 구할 수 있을지 생각해보자. 먼저 LCA..
스프링 컨테이너 ApplicationContext를 스프링 컨테이너라고 한다. 이는 인터페이스로 어노테이션 기반의 자바 설정 클래스로 만들 수도 있고(AnnotationConfigApplicationContext) XML 기반으로 스프링 컨테이너를 만들 수도 있다.(GenericXmlApplicationContext) 최근에는 XML 기반 설정은 잘 사용하지 않으나 기존의 많은 레거시 프로젝트들이 XML로 되어있는 경우가 많다. BeanFactory는 스프링 컨테이너의 최상위 인터페이스로 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean() 등 대부분의 기능을 BeanFactory에서 제공한다. ApplicationContext는 BeanFactory 기능을 모두 상속받아 사용하는데, 대체로..
SOLID 5원칙 SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/Colosed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코브 치환 원칙 ISP(Interface Segregatoin Principle) : 인터페이스 분리 원칙 DIP(Dependecy Inversion Principle) : 의존관계 역전 원칙 1. SRP 단일 책임 원칙(Single responsibility principle) - 한 클래스는 하나의 책임만 가져야 한다. - 하나의 책임의 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른것 ex) UI 변경 시 서버 코드에는 영향을 주..
https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 사용한 알고리즘 : BFS 풀이전략 모든 경우의 수를 BFS를 사용해 완전탐색하는 문제이다. 물통에서 물을 옮길 수 있는 경우의 수는 총 6가지로, 1. A물통-> B물통 2. A물통-> C물통 3. B물통 -> A물통 4. B물통 -> C물통 5. C물통 -> A물통 6. C물통 -> B물통 이 있다. 그런데 물을 옮길 때 조건으로 한 물통이 빌 때까지 물을 다른 물통에 쏟거..
째로스
개발일지