끄적끄적 코딩
article thumbnail
[Java] 백준 2470번 두 용액
알고리즘 2023. 7. 27. 01:39

투포인터 문제입니다. 두개의 용액을 합쳐서 0과 가장 가까운수를 구해야합니다. 정렬을 한 다음 가장 왼쪽과 가장 오른쪽에 각각 포인터를 두고 두개의 합이 0보다 클 경우 오른쪽을 한칸 왼쪽으로 이동 두개의 합이 0보다 작을 경우 왼쪽을 한칸 오른쪽으로 이동 위를 반복하여 가장 합이 작았을 때의 포인터를 출력해주었습니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Buff..

article thumbnail
[Java] 백준 9177번 단어 섞기
알고리즘 2023. 7. 26. 03:10

두개의 단어의 문자를 하나씩 뽑아서 세번째 단어를 만들 수 있는지 구해야합니다. BFS로 모든 경우의수를 탐색합니다. 방문배열에 왼쪽과 오른쪽의 인덱스를 넣어서 방문처리합니다. 같은 인덱스로 방문한 경우 처리하지 않습니다. 왼쪽과 오른쪽이 해당 문자를 전부 탐색한 경우 yes를 출력 Queue가 비어져서 나오게 될 경우 no를 출력합니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw..

article thumbnail
[Java] 백준 21758번 꿀 따기
알고리즘 2023. 7. 26. 02:07

누적합, 그리디 문제입니다. 벌 두마리의 위치와 꿀통의 위치를 적절히 두어서 최대 꿀의양을 출력해야합니다. 벌이 위치한곳의 꿀은 얻을 수 없으며, 벌은 꿀통이 향한 방향으로만 이동합니다. 가능한 경우는 3가지라고 생각했습니다. 1. 벌 벌 꿀통 2. 꿀통 벌 벌 3. 벌 꿀통 벌 1번과 2번의 경우 꿀통과 한마리의 벌은 끝에 두는것이 반드시 유리합니다. (그리디) 가운데 벌만 모든위치에 배치해서 크게 나온 꿀의 양을 얻을 수 있습니다. 3번의 경우 벌을 양쪽 끝에 두는것이 반드시 유리합니다. (그리디) 가운데 꿀통의 위치만 옮겨가면서 결과값을 얻습니다. 1, 2, 3번의 경우들을 모두 해서 가장 큰 결과값을 출력해주었습니다. import java.io.*; import java.util.*; public..

article thumbnail
[Java] 백준 2166번 다각형의 면적
알고리즘 2023. 7. 25. 23:59

다각형을 이루는 꼭지점의 좌표가 주어집니다. 해당 다각형의 면적을 구하는 문제입니다. 신발끈 공식을 사용해서 다각형의 면적을 구했습니다. 꼭지점 좌표가 아래와 같을 경우 1 5 2 6 3 7 4 8 (왼쪽 대각선) 1 * 6 2 * 7 3 * 8 4 * 5 (오른쪽 대각선) 5 * 2 6 * 3 7 * 4 8 * 1 (왼쪽 대각선 구한값) - (오른쪽 대각선 구한값) / 2 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)..

article thumbnail
[Java] 백준 2467번 용액
알고리즘 2023. 7. 24. 21:33

투포인터 문제입니다. 두개의 숫자를 더해서 가장 0과 가까운 수를 만들 수 있는 값들을 구해야합니다. 투포인터를 이용해서 맨왼쪽과 맨오른쪽에 포인터를 지정합니다. 1. 두개의 합이 0보다 크면 오른쪽을 왼쪽으로 한칸 이동 2. 두개의 합이 0보다 작으면 왼쪽을 오른쪽으로 한칸 이동 위의 과정을 반복하면서 합을 구해줍니다. 가장 작은 합을 가진 경우에 왼쪽 오른쪽의 위치의 값을 출력해줍니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(S..

article thumbnail
[Java] 백준 16194번 카드 구매하기 2
알고리즘 2023. 7. 22. 20:56

다이나믹 프로그래밍 문제입니다. 카드를 정확히 N개 구매할 때 최소비용을 구해야합니다. 1~N개 각각 살때의 비용에 대해서 주어집니다. DP배열을 만들어서 1개로 살 수 있는 경우들을 입력해줍니다. 그리고 2개, 3개 ... n개 까지 모든 경우를 넣어줍니다. for (int i = 1; i

article thumbnail
[Java] 백준 10819번 차이를 최대로
알고리즘 2023. 7. 22. 20:31

브루트포스 문제입니다. 최대 입력값이 8이므로 모든 경우의 수를 확인해도 시간초과가 발생하지 않습니다. 순열로 모든 경우의수를 확인합니다. 만들어진 순서로 계산하여 최대값이 나오는 것을 저장하여 출력해주었습니다. import java.io.*; import java.util.*; public class Main { static int n; static int result; static int[] arr; static int[] visit; static int[] calc; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..

article thumbnail
[Java] 백준 1991번 트리 순회
알고리즘 2023. 7. 22. 19:39

트리 순회 문제입니다. 전위 순회, 중위 순회, 후위 순회에 대한 결과값을 출력해주면 됩니다. 전위 : 루트 - 왼쪽 - 오른쪽 중위 : 왼쪽 - 루트 - 오른쪽 후위 : 왼쪽 - 오른쪽 - 루트 위 순서대로 재귀함수를 실행해주면 됩니다. import java.io.*; import java.util.*; public class Main { static BufferedReader br; static BufferedWriter bw; static int[][] arr; static int n; public static void main(String[] args) throws Exception { br = new BufferedReader(new InputStreamReader(System.in)); bw ..

검색 태그