목록분류 전체보기 (52)
JH 개발 블로그
https://programming-workspace.tistory.com/69
인덱스 구조에 대해 포스팅 할 예정입니다.
코딩을 할 때, 특히 알고리즘 문제를 해결할 때 자료형을 변환해야 할 때가 많습니다. 파이썬 같은 동적 타입의 인터프리터 언어면 비교적 쉽게 변환하겠지만 정적 컴파일러 언어인 자바의 특성상 자료형 변환에서 은근 시간을 잡아먹기도 합니다. 따라서 자바에서 자료형 변환하는 방법에 대해 정리하는 포스팅을 작성하게 됐습니다.
프로젝트를 진행하면서 @AuthenticationPrincipal로 받은 userPrincipal에서 getMember()를 통해 현재 로그인된 사용자 정보를 가져온다. 문제 발생은 userPrincipal에서 가져온 Member에서 연관관계에 있는 객체 조회( 예를 들어 게시글 )를 하기 위해 lazy 로딩을 하려고 할 때 발생했다. proxy ~ 'no Session' LazyInitializationException을 내뱉으며 조회가 안됐다. 그 이유를 찾아보니 아래와 같았다. FetchType이 Lazy일땐 먼저 프록시(빈 객체) 객체를 불러온다. 필요할 때 이 객체를 조회하면 DB에서 객체를 조회하는 쿼리가 발생하면서, 프록시 객체가 DB에 저장된 객체로 변한다. 이러한 lazy 로딩은 영속화 ..
코딩을 할때 내림차순 정렬, 객체 비교 등을 위해 정렬을 직접 구현할 때가 많다. 오늘은 Comparable 인터페이스의 compareTo 메소드와 Comparator 인터페이스의 compare 메소드의 차이를 정리해보려 한다. 기본적으로 정렬을 구현할 때 Comparable 인터페이스 또는 Comparator 인터페이스의 메소드를 재정의 할 수 있다. Comparable의 compareTo는 @Override public int compareTo(Stage o) { if (failure o.failure) {return 1;} else return 0; } 현재 객체에서 파라미터 객체 o와 비교를 한다. Stage 클래스는..
from collections import deque def rotate(lr, lc, rr, rc, board): locs = [] for dr, dc in ((-1, 0), (0, 1), (1, 0), (0, -1)): nlr, nlc, nrr, nrc = lr + dr, lc + dc, rr + dr, rc + dc if board[nlr][nlc] == 1 or board[nrr][nrc] == 1: continue locs.append((nlr, nlc, nrr, nrc)) if lr == rr: if lc < rc: if board[lr - 1][lc + 1] == 0 and board[lr - 1][lc] == 0: # 반시계 locs.append((lr, lc, lr - 1, lc)) if..
1. 순열을 이용하여 완전탐색 from itertools import permutations from bisect import bisect_right def solution(n, weak, dist): l = len(weak) weak_line = weak + [w+n for w in weak] answer = [] for friends in permutations(dist): for i in range(l): cnt = 0 position = weak[i] for friend in friends: cnt += 1 position += friend if position < weak_line[i+l-1]: position = weak_line[bisect_right(weak_line,position)] e..
def impossible(answer): for x,y,a in answer: if a == 0: if (x,y-1,0) in answer or (x-1,y,1) in answer or (x,y,1) in answer or y == 0: continue else: return True else: if (x,y-1,0) in answer or (x+1,y-1,0) in answer or ((x-1,y,1) in answer and (x+1,y,1) in answer): continue else: return True return False def solution(n, build_frame): answer = set() for x,y,a,b in build_frame: item = (x,y,a) if b:..