전체 글 215

프로그래머스 - 체육복(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

프로그래머스 - 카펫(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제에서는 입출력의 패턴을 분석하여 풀려고 했다. 가로 * 세로 = brown + yellow(가로-1)*2 + (세로-1)*2 = brown 가로 * 세로가 전체 카펫의 넓이 인데, 세로가 가로보다 더 짧기 때문에 세로값을 이용하여 소인수 분해 공식을 활용 하였다.  세로의 길이가 정해지면 가로의 길이는 자동으로 정해지므로 가로 세로의 길이를 이용하여 조건 2를 사용하여 만족 여부를 확인하고 반환 해주면 정답이 된다.import java..

프로그래머스 - Lv2 소수찾기(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제에서 가장 어려웠던 부분은 입력된 문자열로 만들 수 있는 숫자를 모두 구하는 것 이다. 처음에 dfs 방식을 사용하면 되겠다고 생각을 했는데 dfs를 공부한지 오래되서 다른 풀이를 참고하면서 공부했다. import java.util.*;class Solution { static Set set; static boolean[] visit = new boolean[7]; public int solution(String ..

프로그래머스 - 모의고사(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제의 요구사항만 잘 파악한다면 어려운 문제는 아니다. 하지만 내가 푼 방식은 너무 원시적이라서 정답을 받고 다른 사람 코드도 분석해 봤다. 나는 문제에서 정답의 패턴을 분석했고 입력 배열의 인덱스에 따라서 그 자리에 와야하는 값과 비교하였다. 이러한 비교 함수를 각각의 답안지에 맞게 3개 만들어서 단순비교 후 결과를 반환 하였다. import java.util.*;class Solution { public int[] solution(in..

커넥션 풀 / DataSource

커넥션 풀 데이터베이스 커넥션을 획득하기 위해서는 DB드라이버가 DB와 TCP/IP커넥션을 연결한다. DB 드라이버는 TCP/IP 커넥션이 연결되면  ID/PW와 기타 정보를 DB에 전달한다. 그 후 DB 내부인증이 완료되면 DB세션이 생성되고  DB드라이버가 커넥션 객체를 생성하여 클라이언트에 반환한다. 하지만 이러한 방법은 과정도 복잡하고 시간도 오래걸린다. 이러한 문제를 해결해주는게 커넥션 풀이다.  DB 드라이버는 필요한만큼 커넥션을 미리 생성하여 풀에 보관한다. 이때 커넥션들을 모두 TCP/IP로 DB와 연결된 상태이다.  따라서 클라이언트는 필요할때마다 커넥션을 생성하는 것이 아닌, 커넥션 풀에서 커넥션을 객체 참조로 가져다 쓰기만 하면된다. 사용된 커넥션들은 다시 커넥션 풀로 이동하여 다시 ..

BackEnd/Database 2025.01.13