본문 바로가기

Algorithm

(61)
[프로그래머스] 방문 길이 https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 구현 실수만 하지 않는다면 쉽게 풀리지 않을까 싶다. 나는 지나간 길을 visited 배열에 마킹하는 방식으로 풀었는데 HashSet으로 풀어도 될 듯 하다. 좌표평면의 한 칸이 아니라 모서리를 저장해야 하므로 이런 식으로 윗면과 옆면을 따로 저장하기 위해 3차원 배열로 선언했다. class Solution { public int solution(String dirs) { int answer = 0; // 순서대로 UDLR // visited에 기록하기 위한 배열 int[] x1 = {-1, 0, 0, 0}; int[] y1 = {0, 0, ..
[프로그래머스] 배달 - Java https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr import java.util.Arrays; import java.util.Comparator; import java.util.PriorityQueue; class Solution { public int solution(int N, int[][] road, int K) { final int MAX = 1000000; int answer ..
[프로그래머스] 영어 끝말잇기 - Java https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0] programmers.co.kr import java.util.HashSet; class Solution { public int[] solution(int n, String[] words) { int[]..
[프로그래머스] 점프와 순간 이동 - Java https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈� programmers.co.kr n이 2로 나누어 떨어지면 2로 나누고 n이 2로 나누어 떨어지지 않으면 1을 빼고 건전지 사용량을 1 더해주면 된다. import java.util.*; public class Solution { public int solution(int n) { int ans = 0; while(n > 0) { if (n % 2 == 1) { n--..
[프로그래머스] 소수 만들기 - Java https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 � programmers.co.kr 가능한 세 수의 조합을 모두 따져본 뒤 합계가 소수인지 판정만 하면 되는 문제 n이 소수인지 판별하기 위해서는 2~n-1까지 모든 수로 나눠볼 필요 없이 루트n까지만 나눠보면 된다. class Solution { public boolean isPrime(int n) { for (int i = 2; i*i
[프로그래머스] 스킬트리 - Java https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr skill_tree의 원소들을 skill에 등장하는 알파벳만 남기고 모두 없앤 뒤(코드에서 sub에 해당) skill 문자열에 sub로 시작하면 가능한 스킬트리로 판정되도록 짰당. 다른 분 코드를 보니 정규표현식이 굉장히 편해보인다. 공부해야겠다. class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; // skill에 포함되는 알파벳 정보 저장 boolean[] alpha = new boolean[26]; for (var a : skil..
[프로그래머스] 예산 - Java https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 �� programmers.co.kr 아니 이걸 왜 DP라고 생각하고 끙끙댔지 ㅋㅋㅋㅋ 어떤지 난이도 1에 있는게 이상하다 싶었다 이 문제는 그리디로 접근하면 된다. 일단 d를 오름차순으로 정렬하고 budget이 넘지 않을때까지 첫번째 원소부터 선택해나가면 된다. 결론은 매우 간단한 문제였다.. import java.util.Arrays; class Solution { public int solu..
[프로그래머스] 지형 이동 - Java https://programmers.co.kr/learn/courses/30/lessons/62050 코딩테스트 연습 - 지형 이동 [[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18 programmers.co.kr import java.util.*; class Solution { class Pair { int x; int y; public Pair(int x, int y) { this.x = x; this.y = y; } } class Edge { int u, v, w; public Edge(int u..