Computer Science/알고리즘 31

백준 Java | 백준 11722번 가장 긴 감소하는 부분 수열 Java 문제 풀이

11722번: 가장 긴 감소하는 부분 수열 (acmicpc.net) 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net DP[i] = A[i]를 마지막 값으로 가지는 가장 긴 감소 부분 수열의 길이로 정의하면 쉽게 풀 수 있다. O(N^2) 알고리즘 import java.util.*; class Main { static int n; static int[] A; static int[] DP; public static void main(Stri..

프로그래머스 코딩테스트 연습 | 올바른 괄호 Java 문제 풀이

코딩테스트 연습 - 올바른 괄호 | 프로그래머스 스쿨 (programmers.co.kr) import java.util.*; class Solution { public static void main(String[] args) { System.out.println(solution("()()")); System.out.println(solution("(())()")); System.out.println(solution(")()(")); System.out.println(solution("(()(")); } public static boolean solution(String s) { char[] array = s.toCharArray(); boolean answer = true; Stack stack = ne..

프로그래머스 코딩테스트 연습 | 기능개발 Java 문제 풀이

코딩테스트 연습 - 기능개발 | 프로그래머스 스쿨 (programmers.co.kr) import java.util.*; class Solution { public static int[] solution(int[] progresses, int[] speeds) { ArrayList answerList = new ArrayList(); int[] answer = {}; int days = 0; for (int i=0;i days){ days = needDays; answerList.add(1); } else { answerList.set(answerList.size()-1, answerList.get(answerList.size()-1)+1); } } answer = new int[answerList.si..

프로그래머스 | 다리를 지나는 트럭 Java 문제 풀이

코딩테스트 연습 - 다리를 지나는 트럭 | 프로그래머스 스쿨 (programmers.co.kr) import java.util.*; class Pair { int truck; int index; Pair(int truck, int index){ this.truck = truck; this.index = index; } } class Solution { public static void print(Queue queue){ for (Pair p : queue){ System.out.print(p.truck + " "); } System.out.println(); } public static int solution(int bridge_length, int weight, int[] truck_weights){ ..

[백준 Java] BOJ 11726 2xn 타일링 Java 문제 풀이

11726번: 2×n 타일링 (acmicpc.net) 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net import java.io.*; import java.util.*; public class Main { static int[] dp; public static int answer(int n){ dp = new int[n]; for (int i=0;i10007)?(dp[i-1]+dp[i-2]%10007):dp[i-1]+dp[i-2]; } } return dp[n-1]%10007; } public static void main(Stri..

백준 Java | 세그먼트 트리 문제 풀이(BOJ 1275번 커피숍2)

1275번: 커피숍2 (acmicpc.net) 1275번: 커피숍2 첫째 줄에 수의 개수 N과 턴의 개수 Q가 주어진다.(1 ≤ N, Q ≤ 100,000) 둘째 줄에는 처음 배열에 들어가 있는 정수 N개가 주어진다. 세 번째 줄에서 Q+2번째 줄까지는 x y a b의 형식으로 x~y까지의 합 www.acmicpc.net 세그먼트 트리는 3단계로 구성된다. 1. 트리 만들기 2. 트리 업데이트하기 3. 트리 쿼리(누적합 구하기) 처음에 잘못했던 것 - 트리 업데이트에서는 트리 배열 뿐만 아니라 원본 데이터도 값을 업데이트해주어야 한다. package SegmentTree.P1275; import java.io.BufferedReader; import java.io.IOException; import ja..