Engineering WIKI
-
저장 프로시저 (SP) 개념 뿌수기Engineering WIKI/Database 2022. 4. 5. 15:53
사용 이유 먼저, SQL Server의 성능을 향상 시킬 수 있다. 저장 프로시저를 처음에 실행하면 최적화, 컴파일 단계를 거쳐 그 결과가 캐시(메모리)에 저장되게 되는데, 이 후에 해당 SP를 실행하게 되면 캐시(메모리)에 있는 것을 가져와서 사용하므로 실행속도가 빨라지게 된다. 그렇기 때문에 일반 쿼리를 반복해서 실행하는 것보다 SP 를 사용하는게 성능적인 측면에서 좋다. 두번째, 유지보수 및 재활용 측면에서 좋다. C#, Java등으로 만들어진 응용프로그램에서 직접 SQL문을 호출하지 않고 저장 프로시저의 이름을 호출하도록 설정하여 사용하는 경우가 많은데, 이때 개발자는 수정요건이 발생할때 코드 내 SQL문을 건드리는게 아니라 SP 파일만 수정하면 되기 때문에 유지보수 측면에서 유리해진다. 또한 한..
-
[프로그래머스] 최소 직사각형Engineering WIKI/Programmers 2022. 4. 5. 15:17
코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 아이디어 각 w, h를 비교해서 둘 중 큰 값을 한 리스트에 넣고 나머지를 리스트로 만든다. 두 개의 리스트 중 가장 큰 값을 뽑아서 곱하면 된다. w, h 리스트를 만든다. for문을 돌면서 w, h 중 큰 값은 w리스트 작은 값은 h리스트에 담는다. 두 개의 리스트에서 가장 큰 값이 곱한 값이 답이다. 다른 사람 풀이 1 def solution(sizes): w = [] h = [] for i in range(len(sizes)): if sizes[i][0] >..
-
[프로그래머스] 두 개 뽑아서 더하기Engineering WIKI/Programmers 2022. 4. 5. 15:14
코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 내 풀이 from itertools import permutations def solution(numbers): answer = [] nPr = permutations(numbers, 2) for i in list(nPr): if sum(i) in answer: continue answer.append(sum(i)) return sorted(answer) 다른 방법 from itertools import combi..
-
[프로그래머스] 3진법 뒤집기Engineering WIKI/Programmers 2022. 4. 5. 15:11
코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 내 풀이 def solution(n): answer = 0 three_list = list() while n != 0: three_list.append(n % 3) n = int(n / 3) if n == 0: break pow_val = len(three_list) - 1 for i in three_list: answer += i * pow(3, pow_val) pow_val -= 1 return answer 다른..
-
orphanRemoval 이란?Engineering WIKI/Docs 2022. 4. 2. 01:41
부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제해주는 기능이다. @Entity public class Parent { @Id @GeneratedValue private Long id; private String username; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) private List childList = new ArrayList(); } orphanRemoval을 true로 하면 , Parent parent1 = em.find(Parent.class, parent.getId()); parent1.getChildList().remove(0); // delete 쿼리나간다. 자동으로 ..
-
Spring JPA CascadeType 종류Engineering WIKI/Docs 2022. 4. 2. 01:35
Spring JPA CascadeType 종류 javax.persistence.CascadeType JPA Cascade Type ALL PERSIST MERGE REMOVE REFRESH DETACH CascadeType.ALL 상위 엔터티에서 하위 엔터티로 모든 작업을 전파 @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String name; @OneToMany(mappedBy = "person", cascade = CascadeType.ALL) private List addresses; } @Entity public class Address { @Id @Ge..
-
[프로그래머스] 실패율Engineering WIKI/Programmers 2022. 4. 2. 01:14
코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 내 풀이 (런타임 에러 몇개 발생 10문제 중에 7문제 맞음) from collections import Counter def solution(N, stages): stages_count = Counter(stages) people = len(stages) answer = [] fail_list = {} for i in range(1, N+1): fail_list[i] = stages_count[i] / people people = people - stages_..