[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 카펫
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kryellow의 약수 쌍을 이용해 노란색 영역의 가로, 세로를 구했다.노란색 영역을 w * h라고 하면 갈색 테두리 개수는 (w + 2) * 2 + h * 2로 계산할 수 있다.이 값이 brown과 같다면 전체 카펫의 크기는 {w + 2, h + 2}가 된다. 정답 코드import java.util.*;class Solution { public int[] solution(int brown, int yellow) { List innerSq..
[프로그래머스][MySQL] 가장 큰 물고기 10마리 구하기
·
데이터베이스/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/298517 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스가장 큰 물고기 10마리 구하기 풀이물고기의 ID와 LENGTH를 조회한다.가장 큰 물고기부터 구해야 하므로 LENGTH를 기준으로 내림차순 정렬한다.길이가 같은 경우에는 문제 조건에 따라 ID를 기준으로 오름차순 정렬한다.마지막으로 LIMIT 10을 사용해 정렬된 결과 중 상위 10개만 조회한다. 정답 코드select id, lengthfrom fish_infoorder by length desc, id asclimit 10;
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 소수 찾기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 소수 찾기 풀이이 문제는 주어진 숫자 문자열로 만들 수 있는 모든 숫자 중 소수의 개수를 구하는 문제다.각 숫자 조각을 한 번씩만 사용할 수 있으므로 visited 배열을 사용해 이미 사용한 숫자인지 체크했다.DFS/백트래킹으로 숫자를 하나씩 붙이며 만들 수 있는 모든 순열을 생성했다.예를 들어 "17"이라면 1, 7, 17, 71을 만들 수 있다.중복 숫자가 생길 수 있기 때문에 생성한 숫자는 Set에 저장했다.예를..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 타겟 넘버
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 타겟 넘버 풀이이 문제는 각 숫자 앞에 + 또는 -를 붙여서 target 값을 만들 수 있는 경우의 수를 구하는 문제다.각 숫자마다 선택지는 두 가지다.현재 숫자를 더한다.현재 숫자를 뺀다.따라서 DFS를 사용해 모든 경우를 탐색한다.index는 현재 몇 번째 숫자를 보고 있는지 나타내고, sum은 지금까지 계산한 합을 의미한다.모든 숫자를 다 사용했을 때 sum == target이면 정답 개수를 1 증가시킨다.즉, 이 문제는 + / - 선택..
[프로그래머스][MySQL] 자동차 대여 기록에서 장기/단기 대여 구분하기
·
데이터베이스/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr select history_id, car_id, date_format(start_date, '%Y-%m-%d') as start_date, date_format(end_date, '%Y-%m-%d') as end_date, case when datediff(end_date, start_date) + 1 >= 30 then '장기 대여' else '단기 대여' end as rent_typefro..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 퍼즐 조각 채우기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 뭔가 동작이 필요할 때마다 메서드를 분리했더니 엉망이 되어버린 코드...문제가 생겼는데 혼자 고칠 수가 없어서 지피티의 많은 도움을 받았다...무작정 메서드 분리하는 것이 오히려 마이너스임을 깨달았다...나를 조금 덜 믿고 메서드 별로 테스트하자... 정답 코드 1. table에서 블록을 찾는다.2. game_board에서 빈칸을 찾는다.3. BFS로 연결된 칸들을 Shape로 묶는다.4. Shape를 정규화해서 위치 차이를 없앤다. -> 정렬과 0,..