[프로그래머스] 스킬트리 (java) 포스팅 썸네일 이미지

알고리즘 & 자료구조/프로그래머스

[프로그래머스] 스킬트리 (java)

프로그래머스 level2 - 스킬트리 자바 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 스킬을 한 시점에 하나 배울 수 있다. 연계 스킬들 정보가 주어지는데 연계 스킬들은 순서대로만 배울 수 있다. 연계 스킬이 아닌 스킬들은 언제든지 배울 수 있다. 연계 스킬 정보가 "ABC" 면 'C' 를 배우기 위해서는 'A , B' 를 배웠어야만 하는 이런 상태를 만족시켜서 스킬을 배웠는지 여부를 묻고 있다. 문제 풀이 사용자 스킬 스테이터스 저장소가 있다고 생각하고 저장소에 선행 스킬 정보가 있을 경우에만 다음 스킬을 배울 수 있다고 보면 될 것..

2022.08.24 게시됨

[프로그래머스] 파일명 정렬 (java) 포스팅 썸네일 이미지

알고리즘 & 자료구조/프로그래머스

[프로그래머스] 파일명 정렬 (java)

프로그래머스 level2 - 파일명 정렬 자바 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 파일 문자열 배열 주는데 파일은 영문자와 '.', 공백, '-' 로 구성되는 HEAD 영역과 5자리 이하 숫자로 구성되는 NUMBER 영역, 이외의 부분인 TAIL 영역으로 나눌 수 있다. HEAD -> NUMBER 순서로 오름차순으로 정렬된 파일 목록을 반환해라. 단 HEAD는 대소문자 구별이 없고 NUMBER는 절대적인 수치 기준이다.(00123 == 123) 즉 HEAD 먼저 사전순으로 정렬하고 같으면 숫자 작은 것 부터 정렬해서 반환하라는 ..

2022.08.15 게시됨

카테고리 없음

[java] volatile

몇 번 봤었지만 몰라도 될거라고 생각했던 자바 volatile 키워드에 대해 간단하게 공부하고 기록해보았다. volatile 변수 선언 시 사용하는 키워드 중 하나로 volatile 키워드를 사용하면 변수의 값이 항상 메모리에 쓰여져 있음을 보장할 수 있다. 메모리에 쓰인다니 java에서 일반적으로 변수는 컴파일러나 CPU최적화를 위해 CPU 캐시에 저장된다. 이 때 멀티 스레드 환경에서 다른 스레드가 변수를 변경하면 CPU캐시에 저장된 값과 메모리에 저장된 값이 달라지는 메모리 일관성 문제가 발생할 수 있다. volatile 키워드를 사용하면 이러한 문제를 해결할 수 있다. volatile 변수는 항상 메모리에 저장되며 다른 스레드에서 해당 변수를 읽을 때마다 메모리에서 값을 읽어오기 때문에 변수의 값..

2022.08.12 게시됨

[프로그래머스] 파괴되지 않은 건물(java) 포스팅 썸네일 이미지

알고리즘 & 자료구조/프로그래머스

[프로그래머스] 파괴되지 않은 건물(java)

프로그래머스 level3 - 파괴되지 않은 건물 자바 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 3줄 요약 숫자가 들어있는 N x M 의 행렬이 주어진다. (board) (최대 1000행 1000열) 숫자 상태를 증감시킬 수 있는 특정 크기의 직사각형 정보가 주어진다 (skill).(25만개 이하) [ [증감 여부] , [x시작 좌표], [y시작 좌표], [x 종료 좌표], [y 종료 좌표], [상태 변경 수치] ] skill 다 적용하고 난 뒤 board 에서 0보다 큰 값의 개수를 구하라 나의 풀이 완전탐색 완전탐색으로 풀면 매우 쉬운 ..

2022.07.18 게시됨

[Mybatis] ResultMap 으로 다중 조인 쉽게하기 포스팅 썸네일 이미지

카테고리 없음

[Mybatis] ResultMap 으로 다중 조인 쉽게하기

Servlet 4.0 + MyBatis + JSP + Javascript로 토이 프로젝트를 만들며 다중조인을 적용했던 경험을 기록했다. 개요 간단한 중고책 대여 판매 서비스를 만들어보고자 했었다. Book 테이블은 Book Open API 기반으로 ISBN 등록 시 들어가는 데이터로 같은 ISBN이면 모두 같은 책이다. BookShop 은 사용자의 대여 등록 게시물과 같은 테이블로 하나의 책을 등록할 수 있다. Member 테이블은 사용자로 BookShop에 책을 게시할 수 있게 하였다. 책의 경우 모든 책이 테이블에 다 있다고 가정하고 사용자가 ISBN으로 등록 게시 시도 시 책 정보가 자동으로 insert 되게끔 하였다. BookShop 이 결국 게시판의 게시글과 같은 형태인데 당연히 책의 정보도 같..

2022.02.27 게시됨

[MyBatis] INSERT 성공 후 생성된 자원의 PK 같이 얻어오기 포스팅 썸네일 이미지

Java

[MyBatis] INSERT 성공 후 생성된 자원의 PK 같이 얻어오기

쿼리 매퍼인 MyBatis에서도 자원을 생성하면서 동시에 그 정보(Primary Key)를 객체에 얻어와보자 Servlet + Mybatis + Jsp 를 사용하여 웹 서비스를 만들어볼때는 몰랐는데 Spring + MyBatis로 REST API를 만들려다보니까 Mybatis를 사용해 특정 테이블에 자원을 INSERT 하고 즉시 그 자원에 대한 정보를 가져와야 하는 상황이 발생하게 되었다. 기본적으로 Mybatis 를 통한 CUD 쿼리의 작업 결과는 정수로 결과의 성공여부를 나타내주는 것 같았다. JPA에서는 객체에다가 영속화해줘서 고민해볼 필요가 없는 문제인데 조회 쿼리를 한번 더 날리고 싶지는 않았고 검색하여 본 옛 선배님들의 글들 통해 이를 적용해보았던 내용들을 기록해보았다. 문제 상황: 회원가입 ..

2022.02.26 게시됨

Java

Annotation

어노테이션이란? 어노테이션(Annotation)은 코드에 메타데이터를 추가하는 방법이다. 어노테이션은 @ 기호로 시작하며, 컴파일러나 런타임 시점에 정보를 제공하는데 사용된다. 언제쓸까? 컴파일 시점 체킹 어노테이션을 사용하여 코드를 컴파일할 때 에러를 검출하는 기능을 추가할 수 있다 런타임 처리 어노테이션을 사용하여 런타임에 동작을 변경하는 기능을 추가할 수 있다 문서 어노테이션을 사용하여 문서를 생성하는 기능을 추가할 수 있다. 자바 표준 어노테이션 @Override 선언한 메소드가 상속받은 것임을 나타낸다. @SuppressWarnings 선언한 곳의 컴파일 경고를 무시한다. @Deprecated 선언한 곳이 더이상 사용되지 않는 부분임을 선언하며 사용하면 컴파일 시 경고를 해준다. @Functio..

2022.02.20 게시됨

[Algorithm] BFS & DFS (feat.Java) 포스팅 썸네일 이미지

알고리즘 & 자료구조/Algorithm

[Algorithm] BFS & DFS (feat.Java)

그래프 자료 탐색 방법인 깊이우선탐색(DFS)과 너비우선탐색(BFS)에 대해 공부하고 기록해보자 그래프 정점(Node)과 정점을 연결하는 간선(Edge)으로 구성된 자료구조를 말한다. 특정한 하나의 정점에서는 간선으로 연결된 다른 정점들을 방문할 수 있다. BFS와 DFS는 하나의 정점에서 시작해 그래프의 모든 정점들을 탐색하려할 때의 방법들로 어떤 순서대로 모든 정점들을 방문할지에 차이가 있다. 그래프를 인접 리스트 와 인접 행렬 방법으로 표현할 수 있다. 인접 행렬 방법 int[][] adjArray = new int[n+1][n+1]; for(int i = 0; i < m; i++) { int v1 = sc.nextInt(); int v2 = sc.nextInt(); adjArray[v1][v2] ..

2022.02.15 게시됨