https://school.programmers.co.kr/learn/courses/30/lessons/67259?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법보드의 크기 n 이 25이하이고 입력에서 걱정할 부분이 없기때문에 BFS를 생각했다.BFS를 하며 Cost를 기록하고, 이를 활용해서 최소값만을 계산하려고했다.하지만 문제가 있었다.(1,0)에서 2000코스트이고, (1,1)으로 직진 후 아래로 코너를 돈다(0,1)에서 1700코스트이고, (1,1)으로 아래로 코너를 돈 후 직진을 한다위 두가지 경우에서 1번이 (1,1)에 2100, 2번에 (1,1)이 2400코..
0. 들어가며테스트 환경을 구축할 수 있는 오픈소스 Testcontainers에 대하여 알아보겠습니다. 1. Testcontainers란?Java, go 등 여러 언어에서 사용할 수 있는 Test 환경 구성 오픈소스입니다.프로젝트 유닛, 통합 테스트를 진행할때 DBMS, Kafka, Nginx등의 외부 서비스와는 격리하여 테스트를 작성하는 경우가 많습니다.테스트를 하더라도, test 수행으로 인해 환경이 오염되고 깨지는 문제가 발생할 수 있죠.예를 들어 운영 환경에서, Postgre SQL을 쓰지만 test 환경에서 인메모리 H2 Database를 사용할 수 있는데, 이는 정확한 환경 일치라고 할 수 없습니다. 개발자 입장에서 PostgreSQL의 새롭고 좋은 기능을 발견해도, H2 Database에 구..
https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법임의의 노드에서 도착지까지의 최단거리를 구하면되므로 BFS를 떠올렸다.도착지를 기준으로 n개의 노드를 distMap에 기록하며 거리를 계산하고 출력했다.코드import java.util.*;class Solution { public int[] solution(int n, int[][] roads, int[] sources, int destination) { List> graph = new ArrayList(); ..
https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 방법팰린드롬이 되는 경우는 2가지가 있다.aaabbbaaacbbb위처럼 중간에 하나의 문자는 끼어있어도 팰린드롬 수이이다.따라서 s를 선형탐색하며 팰린드롬을 찾는 find함수를 실행했다.문자열 s범위내이고, l,r 포인터의 문자가 같을경우 좌우로 퍼져가며 탐색l,r 포인터가 한번 더 진행하므로 r-l+1-2 => r-l-1이 해당 팰린드롬 수의 길이가 된다.전역변수 ans를 대소비교를 통해 갱신한다코드class Solution{ in..
https://school.programmers.co.kr/learn/courses/30/lessons/12946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법재귀 알고리즘의 스테디 셀러 문제이며, 구현 과정은 다음과 같이 일반화를 통해 풀 수 있다.n-1개의 원판을 1번 기둥 -> 2번 기둥으로 옮긴다1개 (가장 큰) 원판을 1번 기둥 -> 3번 기둥으로 옮긴다.n-1개의 원판을 2번 기둥 -> 3번 기둥으로 옮긴다코드class Solution { int[][] ans; int idx = 0; public int[][] solution(int n) { ans = ..
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 방법삼각형의 위에서 아래로 이어지는 경로의 값을 더할때, 최대값을 찾는 문제이다.DP가 직관적으로 생각났다.memo배열을 만들고 최대값을 기록하며 이동했고, 가장 아래행 원소의 값을 비교하면된다코드class Solution { public int solution(int[][] triangle) { int n = triangle.length; int[][] memo = new int[n][n]; m..