알고리즘 778

백준 1202번 보석 도둑 (JAVA)

https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 저는 우선순위 큐를 통해 문제를 해결하였습니다. 우선순위 큐를 통해 무게가 가방보다 작은 값 들을 우선순위 큐에 넣고 이 중 가장 큰 가치의 값을 결과값에 더해 답을 구하였습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; imp..

알고리즘 2023.07.02

백준 14651번 걷다보니 신천역 삼 (JAVA)

https://www.acmicpc.net/problem/14651 14651번: 걷다보니 신천역 삼 (Large) 욱제는 ‘삼’이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼(李春森), 삼식이, 삼시세끼, ㄴㄴ 그거 안 삼, 삼과 죽음, 알았삼, 걷다보니 신천역 삼, 그리고 특히 일이삼을 좋아한다. www.acmicpc.net 저는 DP를 이용하여 문제를 해결하였습니다. 3의 배수는 각 자리 수의 합이 3의 배수이면 3의 배수입니다. dfs를 각 자리수의 합만을 인자로 보내고 뎁스가 n이고 3의 배수면 1을 리턴하도록 하였습니다. dp는 뎁스에 대한 합입니다. 하지만 합은 3의 배수인지만 판별하기 위해 쓰이기 때문에 합%3에 해당하는 가지 수를 저장하였습니다. package BOJ.dp;..

알고리즘 2023.07.01

백준 5585번 거스름돈 (JAVA)

https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 저는 그리디를 이용해 문제를 해결하였습니다. 가장 큰 돈 단위부터 돈을 나눠주면서 잔돈의 개수를 확인하였습니다 package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.function.Function; public class BOJ_5585 { priv..

알고리즘 2023.06.30

백준 1189번 컴백홈 (JAVA)

https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 저는 dfs를 이용해 문제를 해결하였습니다. dfs를 통해 방문하지 않았던 지점의 경로를 탐색하고 그 depth가 k인 경우 1을 리턴하여 k의 길이의 경우의 수를 찾았습니다. package BOJ.dfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Str..

알고리즘 2023.06.29

프로그래머스 콜라츠 수열 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181919 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 진행하는 결과 값을 리스트에 넣고 이를 배열로 치환하여 문제를 해결하였습니다. import java.util.*; class Solution { public int[] solution(int n) { int[] answer = cal(n); return answer; } private static int[] cal(int n){ List list = ne..

알고리즘 2023.06.28

프로그래머스 글자 지우기(JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 구현을 통해 해당 인덱스를 사용하지 않는 표시를 하고 사용하는 표시의 것만 문자열로 만들어 해결하였습니다. class Solution { public String solution(String my_string, int[] indices) { String answer = ""; StringBuilder sb = new StringBuilder(); bool..

알고리즘 2023.06.27

백준 12865번 평범한 배낭 (JAVA)

https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. 저는 DP를 이용해 해당 depth와 무게일 때 최대 값어치를 저장하고 이를 활용하여 시간복잡도를 줄였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Ar..

알고리즘 2023.06.26

프로그래머스 더 맵게 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 우선순위 큐를 통해 문제를 해결했습니다. 우선순위 큐를 통해 제일 낮은 값을 찾고 이 값이 K보다 작다면, 우선순위 사이즈를 보고 2이상이라면 두개를 꺼내서 새로운 스코빌 지수를 우선순위 큐에 넣었습니다. 이렇게 제일 낮은 값이 K보다 크게 되는지를 판단하였습니다. import java.util.*; class Solution { private static final int NOT_FOUND..

알고리즘 2023.06.25

프로그래머스 문자열 겹쳐쓰기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. substring을 통해 0부터 s까지 그리고 overwrite_string 또 s+overwrite_string의 길이 부터 my_string의 길이까지 를 합쳐 결과를 구하였습니다. class Solution { public String solution(String my_string, String overwrite_string, int s) { Str..

알고리즘 2023.06.24

백준 2839번 설탕 배달 (JAVA)

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 저는 구현을 통해 문제를 해결했습니다. 먼저 5로 나눌 수 있을수록 봉지가 적어지기 때문에 먼저 n 을 5로 나누고 0까지 for문을 돌면서 3으로 나눠지는지를 확인하여 문제를 해결하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_2839 { public static vo..

알고리즘 2023.06.23