본문 바로가기

전체 글

(87)
2018 KAKAO 자동완성 https://programmers.co.kr/learn/courses/30/lessons/17685 코딩테스트 연습 - [3차] 자동완성 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g programmers.co.kr 이 문제를 풀기 전에 유사한 문제인 KAKAO 2020 가사검색 문제를 풀었기 때문에 금방 풀 수 있었다. 보자마자 Trie로 접근해야겠다는 생각이 들었고, 통과를 할 수 있었다. Trie와 다른 점은 현재 node 를 root로 하는 subtree에 몇개의 단어가 저장되어있는지 알 수 있는 cnt 변수를 추가한 것이다. 원래 각 단어당 입력해..
2019 KAKAO 겨울 인턴쉽 호텔 방 배정 https://programmers.co.kr/learn/courses/30/lessons/64063# 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr Naive하게 생각하면, 요청이 올때마다 해당 방이 빈방인지 아닌지 check하고, 빈방이 아니라면 방번호를 1씩 늘려가며 빈 방인지 아닌지 확인하는 것이 먼저 떠오를 것이다. def solution(k, room_number): answer = [] now = dict() for num in room_number: if num not in now: now[num] = num + 1 else: while num in now: num = now[num] now[num] = num+1 answer.append(num) return answe..
DAO, DTO 정리 spring5책을 보면서 DAO가 그냥 한글말을 영어로 음차한 것이라고 생각했었는데, 실제로는 DAO라는 개념이 있다는 것을 알게되어 관련 내용을 정리해보고자 한다. Entity Entity class는 DB table에 존재하는 Column들을 필드로 가지는 객체이다. DAO (Data Access Object) Database의 추상화된 인터페이스를 제공하는 패턴. Database의 구체적인 사항을 공개하지 않고 data 연산들을 제공한다. 이는 DB의 구체적인 사항을 알지 못해도 Data에 접근 가능하게 해주어 SW가 Single Responsibility Principle을 충족할 수 있게 한다. DTO (Data Transfer Object) DTO는 process, layer간 data를 주고..
Proxy pattern vs Decorator pattern spring을 공부하면서 aspect를 보게 되었는데, aspect를 위한 proxy object를 설명하면서 "해당 예시는 decorator 객체에 가깝다." 라고 설명한 부분이 있었다. 여기에 두 객체 무슨 차이가 있을까 궁금하여 찾아보았다. Proxy pattern : 원본 객체에 대한 접근 권한을 설정하는 것. Derocator pattern : 원본 객체에 추가 기능을 더하는 것. 두 패턴 모두 원본 객체(RealSubject, ConcreteComponent) 와 Decorator, Proxy class가 같은 interface를 상속 받는 것은 같지만, 사용예시들을 보면 다른 역할을 하고 있었다. Decorator패턴은 원본 객체에 기능을 "추가"하는 것이다. 그래서 Decorator 패턴이..
Interface 상속 공부 (same signature interface method) interface 상속 시 같은 이름의 method를 가지는 경우 어떻게 처리되는지 궁금했다. 다음 코드를 컴파일 해보니, 별 문제없이 컴파일 되었다. //T.java public interface T { public void t(); } //T2.java public interface T2 { public void t(); } //Human.java public class Human implements T, T2 { @Override public void t() { System.out.println("talk!!"); } } //Main.java public class Main { public static void main(String[] args) { Human h = new Human(); h.t(..
[Spring] Unsatisfied dependency expressed through field spring 5 tutoroial을 하다가 "Unsatisfied dependency expressed through field " 에러가 났다. Bean 설정시 필요한 것들이 빠졌기 때문에 해당 Exception이 뜨는 것이라고 한다. 나의 경우는 ApplicationContext 생성자에 Configuration annotation이 달린 class를 모두 전달하지 않아서 해당 오류가 발생했었다. 예를 들면 다음과 같은 상황이다. config1.java @Configuration public class Config1 { @Bean public Class1 class1() { return new Class1() } } config2.java @Configuration public class Config..
package 경로 추가 (Eclipse) Eclipse에서 .java 파일만 추가했는데, 탐색기 속 src/main/java 아래에 잡히지 않아서 불-편했었다. 나는 다음과 같이 해결했다. 1. Project 우클릭 -> Build Path -> Configration Build Path 로 Properties를 연 뒤에 2. Java Build Path 에서 source tab 클릭 후, Add Folder로 추가 파일의 경로 추가. 다시해보니, 다음과 같이 해결할 수도 있다. 1. 추가 파일 우클릭 -> use as a source folder 참고 https://ojava.tistory.com/116
Unhandled exception type 에러 처리 (Exception) 책에 있는 throw 문을 작성 중에 Unhandled exception type message가 떳다. Java 문법 문제 인 것 같아서 구글링 해보니, 다른 분이 친절하게 정리해주셨다. 해결 방법은 다음과 같다. 1. try - catch 문으로 error handling 하기, 2. method에 throws Exception 을 추가하여 해당 함수가 Exception을 발생 시킬 수 있다고 명시해주기. Compile time에 해당 error를 처리하는 이유는 reference에 나와있다. This compile-time checking for the presence of exception handlers is designed to reduce the number of exceptions whic..