본문 바로가기

분류 전체보기

(32)
백준 2342. ddr
백준 10422. 괄호
[java] 코딩테스트 벼락치기 dfs, bfs- 탐색이 동시성을 가지는 경우 (ex 한 칸 움직일 때 값이 변하는 경우), 최소거리를 찾아야하는 경우는 bfs가 낫다.dfs1. 체크인2. 목적지인가?3. 연결된 곳을 순회4. 갈 수 있는가?5. 간다6. 체크아웃bfs1. 큐에서 꺼내오기2. 목적지인가?3. 연결된 곳을 순회4. 갈 수 있는가?5. 체크인6. 큐에 넣는다- dfs 시작점 잘 보기. 여러번 for문으로 돌려서 여러 시작점에서 시작해야 하는 경우 있음- dfs 들어갈 때 들어가는 상태 맞추기 자료구조- 세그먼트 트리(빈출)- Trie 클래스 작성 예시(참고문제: 9202. Boggle)class TrieNode { TrieNode[] children = new TrieNode[26]; boolean isWord;..
[taka] swagger ui 달기 및 NoSuchMethod 오류 해결하기 Swagger ui란?Swagger UI는 RESTful API를 시각적으로 탐색하고 테스트할 수 있는 인터페이스로, 개발자들이 API의 엔드포인트와 그에 따른 요청 및 응답을 쉽게 확인할 수 있도록 돕는다. 이는 API 사용 방법을 명확하게 보여주며, API의 복잡한 구조를 한눈에 파악할 수 있도록 한다.Swagger ui 가 필요한 이유1. api 문서 작성 자동화 가능: 간단한 코드 추가로 API 문서를 자동 생성해주기 때문에 문서 작성에 드는 시간과 노력을 크게 줄여주며, 문서와 코드의 불일치를 방지한다. API가 변경될 때마다 수동으로 문서를 업데이트할 필요 없이, 코드와 함께 문서가 자동으로 최신 상태로 유지된다. 2. 개발, 테스트의 편리함: Swagger UI는 사용자가 브라우저에서 직접 ..
[taka] dto에 관한 고찰 Dto가 필요한 이유1. entity란 굉장히 여러 곳에서 사용되는 것이기 때문에, entity를 손댔을 때 api 스펙 자체가 변화하면 안된다. 즉, entity와 api가 1:1로 매핑되면 안된다. 또한, 실무에서는 회원가입 케이스가 많이 존재하기 때문에 (ex 사이트 자체 회원가입, 네이버 회원가입, 카카오 회원가입 등...) 하나의 entity로 여러 가지 케이스를 다 감당할 수가 없다. 그렇기 때문에 entity를 외부에 노출하여 외부에서 들어오는 entity를 @ResponseBody 로 바로 바인딩해서 쓰면 안되고, dto 를 활용하여 데이터를 받는 것이 좋다. 즉, api를 만들 때는 entity를 파라미터로 받으면 안되고, 외부에 노출해서도 안된다.  또한 entity 자체를 받아버리면,..
[taka] 예외처리란 어떻게 해야할까? 원래는 그냥 자체 회원가입을 진행하려고 했는데, 학교 학생들을 대상으로 한 서비스이다보니 학교 이메일 인증이 필수적이라고 생각해서 아예 아이디 대신 학교 이메일을 대신 사용하는게 낫겠다는 생각이 들었다. 그래서 userId 필드 자체를 없애버리고 학교 이메일로 대체했다. 그렇다면 이메일로 인증 코드를 발송하고 그것이 프론트단에서 사용자가 확인차 입력한 코드와 일치하는지 확인하는 로직이 추가적으로 필요했다. 그렇게 어려운 과정이 아닌 것 같았는데 원래 회원가입 하나로 구성된 api 엔드포인트를 인증번호 전송 / 인증번호 확인 / 회원가입 세 개의 엔드포인트로 나눠서 구성해야 했고, 그 과정에서 군데군데 에러가 터졌는데 예외처리를 세분화하지 않으면 어디서 에러가 터졌는지 찾기가 힘들어서 좀 까다로웠다. (계..
[COSE214] Data structures for disjoint sets disjoint set이란 intersection이 공집합인, 서로 공통된 원소를 가지지 않은 두 개 이상의 집합을 말하는 것으로 disjoint set data structure은 collection of disjoint set을 의미한다. disjoint set data structure은 3가지 연산을 제공하는데, make-set(x)는 x를 멤버로 하는 new set을 만드는 연산이고, union(x,y)는 x와 y를 각각 가지는 두 집합을 하나로 합치는 연산이며, find-set(x)는 x를 포함하는 집합을 찾아 그 집합의 대표 원소를 반환하는 연산을 말한다.  이 때 이 연산들의 time complexity는 항상 2개의 parameter m, n에 의해 정의된다. n은 make-set ope..
[taka] entity 수정 + Envers를 이용한 엔티티 변경 감지 @Data 대신 @Getter의 사용실무에서는 @Data를 지양하는데, 이는 setter가 남용될 경우 데이터가 쉽게 변화될 수 있기 때문이다. 이론적으로는 getter, setter을 모두 제공하지 않고 별도의 메서드를 두는 것이 가장 이상적이라고 하지만, 실무에서는 엔티티 데이터를 조회할 일이 너무 많아서 getter은 모두 열어두고 setter의 경우 열어두면 데이터가 변하고 어디서 변화했는지 찾기가 힘들어지기 때문에 setter 대신 변경 지점이 명확해지도록 비즈니스 메서드를 제공해야 된다고 한다. 유효성 검사는 어디에서 해야하는가?유효성 검사를 Dto에서 해야할지 엔티티에서 해야될지 찾아보았는데 - 원칙적으로는 두 곳에서 모두 유효성 검사를 하는 것이 좋겠지만 실무에서는 너무 많은 부분에서 중복..