코딩테스트 8

[solved.ac] 알쏭달쏭 스트릭 그래프 염색 컬러칩 뽑기 (확률표)

solved.ac 스트릭 컬러 뽑기 백준 문제를 풀다보니 별조각이 꽤 많이 모였다. 배경을 사볼까 고민하다가 스트릭 염색 뽑기가 재밌어 보여서 바로 구매해봤다. 색깔 별 확률표 목표는 뽑을 수 있는 레전더리 hanbyeol 색상. 될 때까지 간다. (참조: https://twitter.com/solved_ac/status/1513511973467877376/photo/2) 처음 모습 아무 염색도 안 한 익숙한 초록색이다. 코인 시세 장전된 코인은 6개 총 240번 뽑을 수 있다. 결과(일부) 에픽 레어 레어 에픽 (중략) 캬 70개에서 나왔다! 으흐흐

[DP] 동적 프로그래밍 기본 개념 및 패턴 모음

개념 정리 🟡 거의 모든 DP를 관통하는 개념 3가지 DP 배열이 무엇을 의미할지 정하기 점화식 세우기 시작값 넣기 🟡 반복문 DP를 재귀로 바꾸는 발상 나는 거의 반복문으로 DP를 풀고 있다. 좀 더 쉽게 느껴지기 때문이다. 그런데 재귀가 더 직관적이고 편한 문제들이 분명 존재한다. 반복문을 재귀로 바꾸는 것은 어려운게 아니다. 반복문 DP에서의 시작값은 재귀문에서 if문을 대치하면 된다. (즉, 가장 Deep하게 내려간 마지막 재귀를 찍고 다시 돌아오는 느낌) 쉬운 예시로 피보나치 수열이 있다. // n번째 피보나치 수열을 구하는 문제 // 반복문 public static int calcLoopFibonacci(int n) { int answer = 0; // [CASE1] 값이 1인 경우 해당 값을..

[백준] 2529번: 부등호 (JAVA, 문제, 문제풀이)

https://www.acmicpc.net/problem/2529 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 순열을 통해서 모든 경우의 수를 구하고 부등호 비교를 해서 올바른 값 중 최대값과 최소값을 뽑는 문제. 푸는 방식이 배우고 싶은 아이디어라서 글로 남긴다. 첫 번째 실패 코드 (시간 초과): 부등호를 경우의 수마다 매번 확인하고, 최대값 최소값도 계산 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util..

[JAVA] 유클리드 호제법 (최대공약수, 최소공배수 구현)

https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 ko.wikipedia.org // 최소공배수 public static int LCM(int a, int b) { return (a * b) / GCD(a, b); } // 최대공약수 private static int GCD(int a, int b) { if(b == 0) { re..

[백준] 11053번: 가장 긴 증가하는 부분 수열 (JAVA, 문제, 문제풀이)

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 이 문제를 풀기위한 방법은 여러가지가 있다. 이중 for문, 재귀로 풀 수도 있고 이진 탐색을 이용하여 풀 수도 있다. 이진 탐색 풀이는 다른 사람이 작성한 코드를 보고 이해는 했는데 솔직히 그 아이디어가 어떻게 사람 머리속에서 나오는지 이해가 안된다. 문제를 더 풀어보고 나중에 이 포스팅을 봤을 때, 다른 방법으로도 ..

[백준] 6588번: 골드바흐의 추측 (JAVA, 문제, 문제풀이)

https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 아래의 에라토스테네스의 체를 활용했다. https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 에라토스테네스의 체 수학에서 에라토스테네스의 ..

[백준] 1918번: 후위 표기식 (JAVA, 문제, 문제풀이)

https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 아래 차량기지 알고리즘을 참조했다. https://ko.wikipedia.org/wiki/%EC%B0%A8%EB%9F%89%EA%B8%B0%EC%A7%80_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 차량기지 알고리즘 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 차량기지 알고리즘은 중위 표기법으로 표현된 수식을 분석할 때 사용할 수 있는 알고리즘이..

[백준] 2750번: 수 정렬하기 (C++, 문제, 문제풀이)

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include using namespace std; int main() { int num, arr[1000], flag; cin >> num; for (int i = 0; i > arr[i]; } ..