분류 전체보기 (2341) 썸네일형 리스트형 OSIV란 무엇인가? 🍳머리말JPA에서 자주 등장하는 OSIV(Open Session In View) 개념에 대해 알아보겠습니다. 이 글은 OSIV의 정의, 특징, 장단점, 실무 사용 예제 그리고 최신 트렌드에 대해 설명합니다.📕 정의📔 OSIVHibernate와 JPA에서 사용되는 개념. 영속성-컨텍스트(Session 또는 EntityManager)의 생명주기를 요청-응답(View Rendering) 전체로 확장하는 전략. View에서 데이터에 접근할 때도 DB 연결을 유지할 수 있도록 설계📑 영속성 컨텍스트JPA에서 엔티티를 관리하는 공간EntityManager가 엔티티를 "1차 캐시"처럼 관리데이터베이스에서 가져온 엔티티를 영속성 컨텍스트가 관리하기 때문에 같은 트랜잭션 안에서는 동일한 엔티티를 여러 번 조회.. (Python3) - LeetCode (Medium) : 1072. Flip Columns For Maximum Number of Equal Rows https://leetcode.com/problems/flip-columns-for-maximum-number-of-equal-rows/구현 문제였습니다.📕 풀이방법📔 풀이과정같은 형식을 가진 row들을 정리해 map형태로 저장해줍니다.같은 형태란 일방적으로 비트들을 정렬한 후 비교했을 때 두 행의 원소들이 모두 같다는 의미입니다.python에서는 Counter를 이용해 쉽게 패턴의 개수를 저장할 수 있습니다.1. nomalize함수를 선언해 row의 첫 번째 원소를 기준으로 행의 원소들을 xor한 연산 결과로 저장된 tuple들을 반환하도록 구현합니다.예를 들어, row[0]이 0이고 한 행이 [1,0,1] 라면 for loop를 수행해 row[0]과 xor연산하게 되면 행 그대로 반환됩니다. ro.. (Python3) - LeetCode (Medium) 2257. Count Unguarded Cells in the Grid https://leetcode.com/problems/count-unguarded-cells-in-the-grid/description/2차원 배열을 순회하는 것을 구현해본 문제였습니다.📕 풀이방법📔 입력 및 초기화1. m행 n열 2차원 배열 grid를 선언 후 wall은 'W'로 guard는 'G'로 표기해놓습니다. 2. m행 n열 2차원 배열 checked를 선언 후 모두 0으로 초기화합니다. 3. 4방향 동서남북에 대한 dr, dc를 선언 후 방향에 맞게 선언해줍니다. 4. deque 변수 dp를 선언해 줍니다. 5. 정답 변수 answer를 선언 후 0으로 초기화합니다.📔 풀이과정1. guards를 순회하며 각 위치에 해당하는 grid를 'G'로 표시합니다. 또한 이 위치의 checked또한.. (Python3) - 프로그래머스(연습문제): 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr정렬 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 정답 변수를 선언 하고 0으로 초기화합니다. 2. 귤 크기와 개수를 저장할 tangerine_map을 선언 후 적절히 초기화합니다. 3. 귤의 개수에 대해 내림차순으로 정렬해줍니다.* k이상 개수만큼 담기만하면 되므로 최소의 종류로 담기 위해서는 해당 정렬이 필요합니다.📔 풀이과정여태 담은 귤의 개수 sum을 선언 후 0으로 초기화합니다. tangerine_map의 원소에 대해 순회하며 .. (C++, Python3) - 백준(BOJ) : 벽 부수고 이동하기 2 https://www.acmicpc.net/problem/14442bfs 문제였습니다.📕 풀이방법📔 입력 및 초기화1. n행 m열 부술 수 있는 벽 k를 입력받습니다. 2. 2차원 map_input에 지도를 입력받습니다.📔 풀이과정bfs함수를 수행하며 다음을 진행합니다. 1. i행 j열에 방문해 부순 벽의 개수 k개를 검사하기 위해 queue를 선언 후 행,열,부순 벽의 개수를 tuple형태로 push해줍니다.* python의 경우 일반적인 배열로 queue처럼 사용하면 pop때마다 O(n)이 소요되므로 deque를 사용해줍니다. 2. i행 j열에 k개의 벽을 부쉈을 때 최단경로 check배열을 3차원으로 선언 후 각 원소를 0으로 저장합니다. 2. 인접 4방향에 대해 loop를 수행하며 다음을.. (Java, Python3) - 프로그래머스(연습문제): 크기가 작은 부분문자열 https://school.programmers.co.kr/learn/courses/30/lessons/147355?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문자열을 다뤄보는 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 정답 변수 answer 선언 후 0으로 초기화합니다. 2. p의 길이를 선언 후 해당 값을 저장합니다.📔 풀이과정p길이만큼 자르기 위해 0부터 t의 길이 - p의 길이까지 for loop를 수행하며 다음을 진행합니다.1. 자른 부분 문자열을 저장해주고 p보다 작다면 answer를 1증가시켜줍니다. 파이썬의 경우 문자열,정수 비교를 모두 📔.. (OOP) - IoC와 DI란? 🍳머리말IoC(Inversion of Control) 과 DI(Dependency Injection)에 대해 알아봅니다📕 정의📔 IoC객체의 생성과 라이프사이클 관리를 개발자가 아닌 프레임워크 또는 컨테이너가 하도록 하는 설계 원칙객제 간 제어 권한을 개발자가 아닌 프레임워크로 역전대표적 구현 방식: DI📔 DI객체가 의존성을 외부에서 주입받는 설계 패턴으로 IoC를 구현하는 주요 방법객체는 자신이 필요한 의존성을 컨테이너에서 주입받아 사용📕 주요 특징📔 IoC📑 제어권 역전객체 생성 및 의존성 관리를 프레임워크 또는 컨테이너에서 담당📑 프레임 워크 중심 설계객체간 상호작용이 프레임워크에 의해 관리📑 유연성객체 간 결합도를 낮춰 다양한 구성, 확장 가능. 유지보수성 향상📔 DI.. (Python3) - 프로그래머스(연습문제): 카드 뭉치 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr구현 문제였습니다.📕 풀이방법📔 입력 및 초기화cards1의 index idx1, cards2의 index idx2를 선언 후 0, 0으로 각각 초기화합니다.📔 풀이과정goal의 원소를 순회하며 다음을 진행합니다.1. cards1의 idx1번째 원소가 현재 goal의 문자열과 같다면 바로 뽑아주고 idx1을 1증가시킵니다.2. 이외에 cards2의 idx2번째 원소가 같다면 idx2를 증가시킵니다.3. 1,2번 경우 모두 아니라면 뽑을.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 293 다음