코딩테스트/백준 알고리즘 (BOJ) 5

[백준] 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..

[백준] 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]; } ..