전체 글 248

프로그래머스 - 구명보트

https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 이해가 어렵진 않았으나 시간초과를 극복하는게 중요했던 문제이다. 문제를 보고 오름차순 정렬 후 무게가 적은 사람과 무게가 큰 사람을 같이 태워야 보트를 최소한으로 사용할 수 있겠다고 생각했다. import java.util.*;class Solution { public int solution(int[] people, int limit) { int answer = 0; Arrays.sort(people); ..

[Git] 외부 리포지토리 변경 사항 병합하는 법

현재 나의 리포지토리 ==> web_project_woohyeon최신 변경사항이 있는 리포지토리 ==> web_project_chung 나의 리포지토리를 외부 리포지토리와 병합하는 방법에 대해서 알아보자.. 1. web_project_woohyeon 리포지토리 clone해오기git clone https://github.com/cbnu-dev-O2O/web_project_woohyeon.git  2. web_project_woohyeon으로 이동cd web_project_woohyeon  3. 리모트 주소 확인git remote -v  4. woohyeon브랜치 생성 후 해당 브랜치로 이동git checkout -b feature/woohyeon  5. 외부 리포지토리의 리모트 주소 추가git remote..

git 2025.02.01

TransactionTemplate

//트랜잭션 시작TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); try { //비즈니스 로직bizLogic(fromId, toId, money); transactionManager.commit(status); //성공시 커밋} catch (Exception e) { transactionManager.rollback(status); //실패시 롤백throw new IllegalStateException(e); } 위 코드는 보면 비즈니스 로직이 성공하면 commit을 하고 실패하면 rollback을 한다. 이러한 비즈니스 로직이 여러개라면 커밋과 롤백 코드를 각각의 비즈..

BackEnd/Database 2025.02.01

프로그래머스 - 큰 수 만들기(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr number의 자리수는 2자리 이상, 100만자리 이하 이므로 모든 경우를 구해서 최대값을 구하게 되면 무조건 시간초과가 발생한다. 따라서 최적의 경우를 구할 수 있는 그리디 알고리즘을 생각해야 한다. EX)4177252841K=4 K가 4 이므로 최종 숫자의 길이는 10-4=6이 되어야 한다. 여섯자리 숫자를 구해야 하므로 처음의 (41772) 중에서 시작점을 구해야 한다.만약5가 시작점이 된다면 여섯자리 숫자를 만들 수 없기 때문이다. 가장..

프로그래머스 - 체육복(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42862# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 보기에는 쉬워보이나 예외 케이스가 많아서 생각이 많아지는 문제였다. 우선 오류가 생기는 코드부터 확인해보자. 우선 lost배열과 reserve배열을 비교하며 앞뒤 번호에 여분이 있는지만 체크를 해봤다.import java.util.*;class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = n-lost.length; ..

프로그래머스 - 게임 맵 최단거리(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr BFS문제를 오랜만에 풀어서 어려웠다. 처음에는 DFS로 풀었다. 정확성 테스트는 모두 통과 했지만, 효율성 테스트에서 시간초과로 실패하였다. import java.util.*;class Solution { public boolean[][] visit; public int answer=2147483647; public int[] dx={-1,1,0,0}; public int[] dy={0,0,-1,1}; public b..

프로그래머스 - 타겟 넘버(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 재귀 알고리즘을 활용하여 아주 쉽게 풀수 있는 문제이다. ※주의 해야할 점순서를 바꾸면서 계산하지 않기 때문에 계산의 시작점을 다르게 하거나 뒤로 돌아가는 경우를 구할 필요 없이 선형적으로 뻗어 나가면 된다.선형적으로 앞으로만 뻗어나가면서 계산하면 되기 때문에 방문여부를 따지는 Visit 배열은 필요없다.import java.util.*;class Solution { static int count =0; public int solut..

프로그래머스 - 모음사전

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 재귀호출을 활용하여 풀 수 있는 문제이다. 요구사항1. "A","E","I","O","U" 를 이용해서 만들 수 있는 5자리 이하 문장을 만들어야 한다.2. 주어진 문자열이 사전순으로 몇번째에 위치 하는지를 구해야 한다. 우선 사전순으로 들어가야 한다면 다음과 같은 순서로 들어가야 할것이다.AAAAAAAAAAAAAAAAAAAEAAAAIAAAAO...AAAEA...EEAEAA... 이를 구현하기 위해 리스트를 생성하고 재귀호출 하면서 만들어지는 ..

프로그래머스 - 피로도

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr dfs를 연습해볼 수 있는 좋은 문제인 것 같다. 이 문제에서 dfs를 사용해야하는 이유는 다음과 같다.던전을 순차적으로 방문할 필요는 없다.모든 경우를 구하여 최대 방문 횟수를 구해야 한다.때문에 dfs를 구현하여 가능한 모든 경우의 수에서 최대 던전 탐험 횟수를 구하면 된다. import java.util.*;class Solution { public static int count=0; public static boolean[] ..

DB 락

서로 다른 세션에서 동시에 같은 데이터를 수정하게 되면 치명적인 오류가 발생한다. 이러한 문제를 방지하기 위해 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안에는 커밋이나 롤백 전까지 다른 세션에 서 해당 데이터를 수정할 수 없게 막아야 하는데 이러한 기능을 하는게 DB 락 이라는 개념이다.   set autocommit false; update member set money=500 where member_id = 'memberA'; 세션1에서 락을 획득하고 money를 500으로 변경하고 커밋을 안했다.   SET LOCK_TIMEOUT 60000; set autocommit false; update member set money=1000 where member_id = 'memberA'; 이때 세션..

BackEnd/Database 2025.01.19