전체 글 239

예외

Error ==> 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다.개발자는 이 예외를 catch나 Throwable로 잡으려고 해서는 안된다. 체크 예외(Exception), 언체크 예외(RuntimeException) ExceptionException = 컴파일러가 체크하는 체크 예외이며, 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.하위 예외로 SQLExceptoin과 IOException이 있다.RuntimeException컴파일러가  체크하지 않는 언체크 예외이다.하위 언체크 예외로 NullPointException과 IllegalArgumentException이 있다.  예외 기본 규칙     예외는 잡아서 처리하거나 처리를 못하면 밖으..

자바 2025.02.02

프로그래머스 - 구명보트

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[] ..