[백준] 11053. 가장 긴 증가하는 부분 수열 풀이 / Python, JavaScript
11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 11053. 가장 긴 증가하는 부분 수열 기본적인 문제해결 아이디어는 다음과 같습니다. 현재 수가 V수일 때, 수열의 길이는 V보다 작은 정수들 중에서 가장 긴 수열을 가진 정수의 길이 + 1이다. 예시로 주어진 입력을 봅시다. 10 20 10 30 20 50 기본적으로 수열의 값을 하나씩 순회합니다. 그리고 매 순회의 결과를 담은 것을 테이블이라고 하겠습니다. 1. 현재 수는 10이고..
[백준] 6588. 골드바흐의 추측 풀이 / Python, JavaScript
6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 작성 코드 (.py) import sys sys.stdin = open("input.txt", "r") # 제거 input = sys.stdin.readline n = 1000001 # 소수 아닌 모든 홀수 처리 table = [1] * n for i in range(3, int(n ** 0.5) + 1, 2): if table[i]: for j in range(i * 2, n, i): table[j] = 0 # k가 만들어지는 두 홀수인..
[백준] 17299. 오등큰수 풀이 / Python, JavaScript
17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 이 문제는 오큰수 문제와 크게 다른 것은 없고 조건식만 조금 바꿔주면 동일한 문제입니다. [백준] 17298. 오큰수 풀이 / Python, JavaScript 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 작성 코드 (.py) import sys input = sys.stdin.read y..
[백준] 17298. 오큰수 풀이 / Python, JavaScript
17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 작성 코드 (.py) import sys input = sys.stdin.readline n = int(input()) table = list(map(int, input().split())) s = [] result = [-1 for _ in range(n)] for i in range(len(table)): while s and s[-1][0] < table[i]: v, idx = s.pop() result[idx] = table[i] else: s.append((tabl..
[백준] 1874. 스택 수열 풀이 / Python, JavaScript
1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 작성 코드 (.py) import sys input = sys.stdin.readline n = int(input()) result, s, a = [], [], 1 for _ in range(n): now = int(input()) if s and s[-1] == now: s.pop() result.append("-") else: for i in range(a, now + 1): ..