본문 바로가기

전체 글

백준1717 문제 풀이 Union-Find 기본 문제이고 골드5로 난이도가 낮은 편이라고 생각합니다. 이전 포스트의 union-find의 기본 개념만 알고 있다면 쉽게 풀 수 있습니다. 0~N까지의 서로소 집합이 있고 merge, find 함수 그리고 두 그룹이 같은 그룹에 속하는지 체크하는 함수만 있으면 됩니다. 두 그룹이 같은 그룹인지 체크는 root 노드가 같은지 체크하면 됩니다. 아래는 풀이 코드입니다. package backjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Backjoon1717 { public.. 더보기
Union-Find 개념 서로소 집합 서로소 집합이란 집합들이 서로 분리관계에 있는 집합 1) 교집합이 없고 한 개의 원소는 1개의 집합에만 포함 2) union-find를 통해서 서로소 집합을 효과적으로 표현 가능 집합의 표현 1) 변형된 tree 형식으로 표현 2) 서로소 집합은 부모에 대한 링크만을 가지고 있다. Union 부모가 자기 자신인 원소끼리 연결하여는 것. 즉, 두 서로소 집합을 합하는 것 Union 최적화 두 서로소 집합을 합할 때 깊이가 좀 더 얕은 집합을 다른 집합에 추가하는 것 e.g. 깊이가 2인 집합 A, 깊이가 3인 집합 B가 있을 때 1) A에 B를 이어 붙이게 되면 깊이가 4인 A' 집합이 된다. 2) B에 A를 이어 붙이게 되면 깊이가 3인 B' 집합이 된다. 각 집합의 깊이를 저장하고 깊이가 .. 더보기
jar vs war 패키징 차이 (jar, war) 1. JAR JAR는 Java Archive의 줄임말이며 java 클래스 파일, java 라이브러리, 어플리케이션 리소스, 메타데이터 파일들을 가지고 있는 압축 파일입니다. jar 파일은 jar 커맨드나 maven, gradle과 같은 툴로 생성할 수 있습니다. 2. WAR WAR는 Web Application Archive, Web Application Resource의 줄임말입니다. war는 어떤 웹 컨테이너에도 배포 할 수 있는 압축 파일입니다. WAR는 WEB_INF라는 디렉토리를 포함하고 있으며 이 폴더 안에는 웹 리소스들이 포함되어 있습니다. 그리고 web.xml, 서블릿 클래스, 라이브러리들을 가지고 있습니다. war 파일 역시 jar 커맨드나 maven, g.. 더보기
ES6 특징 최근에 본 면접에서 면접관님이 ES6 특징에 대해서 이야기 해줄수 있냐고 물어봤는데 예전에 찾아봤던 내용이 하나도 기억이 안나서 대답을 못했습니다. 보통 면접에서 대답을 못한 질문에 대해 기억이 잘 안나는데 이번엔 대답을 못한게 많아서 그런지 대답 못한 질문들이 기억이 많이 나네요.. 1. let과 const 기존에 변수는 var 예약어로 선언을 했습니다. ES6부터는 let과 const가 나왔는데 let은 변수에 사용하며 const는 상수에 사용합니다. let은 var와 다르게 재선언이 불가능합니다. 위에서 이미 사용한 변수명을 아래에서 또 사용하면 SyntaxError를 발생시킵니다. 그렇지만 const와 다르게 let과 var은 둘다 재할당이 가능합니다. let과 const는 block레벨 스코프를.. 더보기
Monolithic vs Micro Service Architecture(MSA) Monolithic 어플리케이션 웹 서비스에 관련된 모든 코드들을 하나의 파일로 묶어 WAS에 배포하는 방식. 화면레이어, 어플리케이션레이어, 데이터레이어를 하나의 프로젝트에서 관리하는 것을 의미합니다. monolithic도 장점은 있습니다. 개발, 테스트, 배포, 스케일아웃/인이 쉽습니다. 프로젝트 하나만 관리하면 되기 때문에,,, 그렇지만 단점이 제법 있습니다. 프로젝트가 커지면 커질수록 로컬에서 개발환경을 띄울때 점점 느려집니다. 랩탑의 자원은 한정적이기 때문에,,, 프로젝트의 기술 스택의 변경이나 리팩토링을 해야 할 경우 어려움이 있습니다. 왜냐하면 하나를 바꿈으로 전체 프로젝트에 어떤 영향을 줄지 파악하기 어렵습니다(프로젝트가 크기 때문). 특정 컴퍼넌트가 에러로 인해 다운될 경우 프로젝트 전체.. 더보기
RestTemplate와 WebClient 비교 현직장에서 java에서 API호출시 기존에는 RestTemplate을 사용하다가 WebClient로 변경을 했습니다. 변경한 이유는 우선 서비스의 속도 개선때문이었는데요,, 간단한 비교 글입니다. RestTemplate 웹 개발을 하다 보면 url을 호출 할 수 있는 webclient를 이용하여 데이터를 요청하고 해당 데이터 처리를 해야 합니다. spring framework는 이를 위해 RestTemplate과 WebClient를 제공합니다. RestTemplate은 동기이면서 블록킹이며 java servlet api 기반으로 하나의 요청당 하나의 스레드를 사용하는 클래스입니다. 이는 HTTP request가 response를 받을 때까지 해당 스레드는 다른 행위를 하지 못하고 기다려야한다는 뜻입니다... 더보기
자바 인터뷰 질문 1. 자바의 특징 객체지향언어(Object-oriented) OS로부터 자유로움. JVM만 설치되어있으면 어디서든 실행가능 캡슐화 - 외부에서 내부의 내용을 확인 할 수 없음 상속 - 한 객체를 새로운 객체가 상속받음 다형성 - 한 객체가 서로 다른 객체로 재구성 추상화 - 객체의 기능만 보여주고 세부 내용은 상속 받아 구현 2. 자바는 값에 의한 호출? 참조에 의한 호출? 자바는 둘다 가능하다. 3. final 키워드란? 클래스에 사용하면 해당 클래스는 상속 불가 변수에 사용하면 해당 변수의 값을 변경 불가 함수에 사용하면 해당 함수 오버라이드 불가 final 키워드는 한번 선언된 것을 변경되지 않기를 원할 때 사용 4. static import란? 다른 클래스에 선언된 함수나 상수를 이용할 때 클래스.. 더보기
HTTP 메소드 HTTP 메서드의 종류 https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods 에 들어가면 위와같이 9개의 메소드가 정의되어있습니다. 저는 이 중에서 자주 쓰는 5개에 대해서 이야기 해보려 합니다. 특히 REST API는 URI 정의와 HTTP메소드를 알맞게 쓰는 것이 중요하기 때문입니다. 예시는 아래의 EMP 테이블로 하겠습니다. EMP ID name age position 132 제임스 29 개발자 243 존 30 기획자 GET 해당 URI에 알맞은 자료를 가져옵니다. 예를 들어 GET /emp/{ID} 라는 API가 정의되어있으면 클라이언트에서 GET /emp/132 를 호출하면 아래와 같이 response를 반환합니다. { ID : 132, name.. 더보기