본문 바로가기
728x90
반응형

전체 글416

[Programmers] 카카오프렌즈 컬러링북 문제 2017 카카오코드 예선 > 카카오프렌즈 컬러링북 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 아이디어 이번 문제의 아이디어는 BFS입니다. 풀이 방법은 다음과 같습니다. 1. 배열을 탐색하며 원소 값이 0이 아니고 방문한 적이 없는 인덱스 찾기 2. 찾은 인덱스를 기준으로 원소 값이 같은 인접한 인덱스를 BFS로 모두 방문 3. 배열을 모두 탐색할 때 까지 1~2를 반복 구현 코드 (Java) import java.util.*; class Solution { public int[] solution(i.. 2021. 4. 16.
[Programmers] 쿼드압축 후 개수 세기 문제 월간 코드 챌린지 시즌1 > 쿼드압축 후 개수 세기 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 아이디어 이번 문제의 아이디어는 DFS입니다. 원하는 조건이 달성되지 않으면 달성될 때까지 깊이를 최대한 들어가면서 탐색해주면 됩니다. 풀이법은 생각보다 간단합니다. 1. 배열 전체를 탐색 2. 모든 배열 값이 동일하지.. 2021. 4. 15.
[Programmers] 풍선 터트리기 문제 월간 코드 챌린지 시즌1 > 풍선 터트리기 코딩테스트 연습 - 풍선 터트리기 [-16,27,65,-2,58,-92,-71,-68,-61,-33] 6 programmers.co.kr 아이디어 i번째에 존재하는 풍선이 최후까지 남는 지를 확인하기 위해 제가 생각한 방법은 다음과 같습니다. 우선 i번째를 기준으로 좌측과 우측의 풍선을 최대한 터트려서 총 3개의 풍선을 남깁니다. 그리고 좌측에 최후까지 남은 풍선을 i-1번째 풍선, 우측에 최후까지 남은 풍선을 i+1번째 풍선이라고 일컫겠습니다. 1. 만약 풍선을 3개로 만드는 과정에서 번호가 작은 풍선을 터트리지 않았다면?? i-1번째와 i+1번째는 항상 방향마다 가장 작은 번호의 숫자가 담긴 풍선이 남음 그리고 i-1번째와 i+1번째 풍선 중 하나라도 .. 2021. 4. 14.
[Programmers] 삼각 달팽이 문제 월간 코드 챌린지 시즌1 > 삼각 달팽이 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 아이디어 이번 문제의 아이디어는 달팽이 모양으로 회전을 하는 방법이라고 생각합니다. 제가 생각한 방법은 다음과 같습니다. 아래 방향으로 이동하며 정수 값을 집어넣기 배열을 벗어나거나 값이 존재하는 인덱스를 마주할 경우 우측 방향으로 방향 전환 우측 방향으로 이동하며 정수 값을 집어넣기 배열을 벗어나거나 값이 존재하는 인덱스를 마주할 경우 좌상단 방향으로 방향 전환 좌상단 방향으로 이동하며 정수 값을 집어넣기 배열을 벗어나거.. 2021. 4. 13.
[Programmers] 뉴스 클러스터링 문제 2018 KAKAO BLIND RECRUITMENT > [1차] 뉴스 클러스터링 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 아이디어 이번 문제의 아이디어라고 할만한 것은... 딱히 없는 것 같습니다. 굳이 선택하자면... 집합 연산에 대해 아는지 정도라고 생각합니다. 해당 문제를 풀기에 앞서 집합연산 수식에 대해 알고 가셔야 될 것이 있습니다. n(A∪B) = n(A) + n(B) - n(A∩B) => 집합 A와 집합 B의 합집합 개수 = 집합 A의 개수 + 집합 B의 개수 -.. 2021. 4. 12.
[Programmers] 추석 트래픽 문제 2018 KAKAO BLIND RECRUITMENT > [1차] 추석 트래픽 2021. 4. 11.
[Spring] 설정 파일 변경하는 다양한 방법 (xml → Java) 안녕하세요. J4J입니다. 이번 포스팅은 설정 파일을 변경하는 다양한 방법에 대해 적어보는 시간을 가져보려고 합니다. 최근 스프링 설정 파일의 추세는 익숙하지 않은 xml파일보다 익숙한 환경의 Java파일로 설정하는 추세라고 개인적으로 생각합니다. 그리고 변경하는 방법에는 다양한 방법들이 있는데 그중 제가 알고 있는 방법들을 정리해보고자 합니다. root-context와 service-context 모두 각각 2가지 방법밖에 모르지만요 ㅎㅎ.. 제 블로그에서 사용했던 JPA와 MyBatis 설정방법까지 같이 포함하여 변경해보도록 하겠습니다. 변경 전 root-context.xml 혹시 태그를 사용하는데 에러가 발생하시는 분은 xml파일 하단의 Namespaces탭을 다음과 같이 변경해주시면 됩니다. ro.. 2021. 4. 10.
[Spring] JWT 구현하기 (2) 안녕하세요. J4J입니다. 이번 포스팅은 Client에서 JWT 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 이전에 작성된 포스팅을 참고하시면 이해가 더 잘되실 겁니다. 2021.04.07 - [Spring/Spring] - [Spring] JWT란? 2021.04.08 - [Spring/Spring] - [Spring] JWT 구현하기 (1) 이전 꺼를 보신 분들은 스프링에서 JWT사용을 위한 설정이 완료된 상태일 겁니다. 이번엔 Client가 사용되는 화면을 구성할 React를 이용해서 어떤 식으로 서버와 주고받는지에 대해 보여드리도록 하겠습니다. 기본적인 흐름은 다음과 같습니다. 화면에서 아이디와 비밀번호를 입력하여 로그인하기 정상적으로 로그인이 된 경우 브라우저 저장소.. 2021. 4. 9.
[Spring] JWT 구현하기 (1) 안녕하세요. J4J입니다. 이번 포스팅은 Server에서 JWT 구현하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 이전에 작성된 포스팅을 참고하시면 이해가 더 잘되실 겁니다. 2021.04.07 - [Spring/Spring] - [Spring] JWT란? 이번 포스팅에서는 스프링 설정만 진행해보고자 합니다. Client 부분은 다음 포스팅에서 작성하여 이번에 구현한 스프링과 서로 통신되는 과정을 보여드리도록 하겠습니다. 스프링에서 JWT를 구현을 위한 키워드는 Interceptor를 이용하는 것입니다. ※ Interceptor에 대해 모르신다면? 2021.03.01 - [Spring/Spring] - [Spring] Filter / Interceptor Client에서 보낸 요청.. 2021. 4. 8.
[Spring] JWT란? 안녕하세요. J4J입니다. 이번 포스팅은 JWT가 무엇인지에 대해 적어보는 시간을 가져보려고 합니다. JWT란? JWT는 JSON Web Token의 약자로 선택적 서명 및 암호화를 사용하여 JSON 데이터를 보관하고 있는 인터넷 표준 웹 토큰입니다. JWT를 사용하는 이유는 주로 사용자 인증처리를 위해서입니다. 기존에 사용되던 세션 처리와 달리 서버에 정보를 저장하지 않아 Stateless한 상태의 서버를 만들어주는 특징이 있습니다. JWT 구조 JWT는 Header(헤더), Payload(내용), Signature(서명)의 3가지로 구분되며 다음과 같이 토큰이 만들어집니다. JWT 토큰: [Base64(Header)].[Base64(Payload)].[Base64(Signature)] Header(헤.. 2021. 4. 7.
[JPA] could not initialize proxy - no Session 에러 안녕하세요. J4J입니다. JPA를 사용하다가 연관관계 매핑을 위해 @OneToMany 어노테이션을 추가한 뒤 findAll() 메서드를 테스트했는데 다음과 같은 에러가 저를 반겼습니다. "failed to lazily initialize a collection of role: className, could not initialize proxy - no Session" 위의 에러가 나올 때 @Transactional을 추가해줬더니 에러가 해결되었습니다. package com.spring.jpa; import javax.transaction.Transactional; import org.junit.Test; import org.junit.runner.RunWith; import org.springframe.. 2021. 4. 6.
[Spring] JUnit Test에 JNDI 적용 안녕하세요. J4J입니다. 이번 포스팅은 JUnit Test에 JNDI 적용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 포스팅을 보시면 JNDI를 이용하여 데이터베이스를 연결하는 방법에 대해 설명드렸었습니다. 하지만 JNDI를 사용하게 되면 단위 테스트를 진행할 때는 서버를 실행시키지 않으니 데이터베이스의 정보를 알 수 없는 문제가 발생하게 됩니다. 역시나 JNDI와 단위 테스트를 동시에 사용할 수 있는 방법이 있었고 어떻게 설정하는지 보여드리도록 하겠습니다. 프로젝트 설정 제가 설정했었던 RootContext파일은 다음과 같습니다. package com.spring.jndi.config; import javax.sql.DataSource; import org.mybatis.spring.S.. 2021. 4. 5.
[Spring] JNDI를 이용한 Tomcat에 Datasource 구성 안녕하세요. J4J입니다. 이번 포스팅은 JNDI를 이용한 Tomcat에 Datasource 구성에 대해 적어보는 시간을 가져보려고 합니다. JNDI란? JNDI는 Java Naming and Directory Interface의 약자로 디렉터리 서비스에서 제공하는 데이터 및 객체를 참고하여 사용할 수 있도록 도와주는 자바 API입니다. JNDI를 사용하는 이유는 프로젝트 내부에 DB정보를 담아두는 것이 아니라 Tomcat과 같은 WAS 서버에 DB정보를 담아두고 사용하기 위해서입니다. 보통 개인들이 모여서 하는 프로젝트에서는 DB서버를 하나만 사용하지만 회사에서는 개발 목적, 운영 목적 등으로 구분되어 여러 서버를 사용하는 경우가 있습니다. 이런 경우 목적에 적합한 DB를 실행시키기 위해 매번 data.. 2021. 4. 4.
[JPA] MapStruct, Entity ↔ DTO 변환 안녕하세요. J4J입니다. 이번 포스팅은 엔티티와 DTO 간 변환을 도와주는 MapStruct에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 이전 포스팅에서 MapStruct와 유사한 역할을 해주는 ModelMapper의 사용법에 대해 작성을 했었습니다. ModelMapper에 대해 알고 싶으신 분들은 이곳으로 방문해주시면 됩니다. MapStruct란? MapStruct는 엔티티와 DTO 간에 변환할 때 자동으로 매핑시켜 변환되도록 도와주는 라이브러리입니다. 매핑해줄 클래스에는 setter가 있어야 하고 매핑이 되는 클래스에는 getter가 있어야 사용 가능합니다. 또한 추가적인 인터페이스를 작성해야 되고 maven install을 통해 작성된 인터페이스에 맞는 구현 클래스도 만들어져 있어야.. 2021. 4. 3.
[Programmers] 길 찾기 게임 문제 2019 KAKAO BLIND RECRUITMENT > 길 찾기 게임 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr 아이디어 이번 문제는 주어진 정보를 가지고 이진트리 만들 주 아니? 를 물어보는 것 같습니다. 왜냐하면 이진 트리를 구성하게 되면 자연스럽게 전위 순회와 후위 순회를 했을 때의 순서를 알 수 있기 때문입니다. 이진트리를 만드는 방법은 생각보다 어렵지 않았습니다. 주어진 노드 정보들의 y값들이 트리의 depth가 되기 때문에 y값이 큰 순서부터 차례대로 판단을 해주면 됩니다. 먼저 y에 대해.. 2021. 4. 2.
[JPA] ModelMapper, Entity ↔ DTO 변환 안녕하세요. J4J입니다. 이번 포스팅은 엔티티와 DTO 간의 변환을 도와주는 ModelMapper에 대해 적어보는 시간을 가져보려고 합니다. JPA로 이것저것 해보다가 궁금한 사항이 생겼습니다. 데이터베이스 테이블과 매핑하여 사용되는 엔티티를 view layer와 주고받아도 될까??? MyBatis만 사용하던 상황을 생각해보면 이런저런 상황들 때문에 dto에는 데이터베이스에 들어있는 값만 변수로 지정돼있지 않습니다. 이와 같은 상황을 동일하게 엔티티에 적용한다고 생각해봤을때 테이블과 자동으로 매핑되는 엔티티에는 치명적일 것이라고 생각이 들었습니다. 관련된 내용을 찾아보면서 다른 사람들도 저와 유사한 고민을 하고 있다는 것을 알게되었습니다. 그리고 궁금증에 대한 해답으로 DB layer와 view lay.. 2021. 4. 1.
[JPA] MyBatis와 동시 사용 (DTO/엔티티 통합, 연관관계 매핑) 안녕하세요. J4J입니다. 이번 포스팅은 DTO/엔티티를 통합하여 JPA와 MyBatis를 동시 사용하는 설정에 대해 적어보는 시간을 가져보려고 합니다. 이전 포스팅에서는 DTO/엔티티를 분리하여 JPA와 MyBatis를 위한 클래스들이 독립적으로 되어있도록 구현해봤습니다. 하지만 이런 방법으로 구현했을 땐 데이터베이스에 매핑되는 클래스들을 JPA와 MyBatis 각각 1개씩 생성해줘야 됩니다. 그렇기 때문에 이번 포스팅에서는 DTO와 엔티티를 통합하여 하나의 클래스만 생성해보도록 하겠습니다. 추가적으로 MyBatis를 간단하게 사용해보신 분들은 엔티티끼리 연관관계 매핑이 되어 클래스 변수에 객체가 있을 경우 mapper에서 객체를 조회하는 방법에 대해 모르실 수 있습니다. 연관관계 매핑이 되어있을 때 .. 2021. 3. 31.
[JPA] MyBatis와 동시 사용 (DTO/엔티티 분리) 안녕하세요. J4J입니다. 이번 포스팅은 DTO/엔티티를 분리하여 JPA와 MyBatis를 동시 사용하는 설정에 대해 적어보는 시간을 가져보려고 합니다. JPA 관련되어 초기 포스팅을 했던 것처럼 JPA와 MyBatis를 동시 사용하는 프로젝트를 구성해보고자 합니다. JPA가 효율적인 것은 JPA를 사용하고, JPA로 구현을 못하거나 MyBatis가 더 효율적인 것은 MyBatis를 사용할 수 있게끔 하여 보다 효율적인 개발환경이 세팅될 것으로 생각됩니다. 이번에는 DTO와 엔티티를 분리하여 설정해보도록 하겠습니다. 서로 독립되어 있기 때문에 연관되는 것 없이 각자의 스타일대로 작성해줄 수 있다는 특징이 있습니다. DTO와 엔티티를 통합하여 설정하는 것은 다음 포스팅에서 진행하도록 하겠습니다. 이번 주제.. 2021. 3. 30.
728x90
반응형