목록전체 글 (601)
sm 기술 블로그
import sys input = sys.stdin.readline N = int(input()) num = list(map(int,input().split())) numReverse = num[::-1] numDpIncrease = [1]*N numDpDecrease = [1]*N for i in range(N): for j in range(i): if num[i] > num[j]: numDpIncrease[i] = max(numDpIncrease[i], numDpIncrease[j]+1) if numReverse[i] > numReverse[j]: numDpDecrease[i] = max(numDpDecrease[i],numDpDecrease[j]+1) result = [0]*N for i in ra..
깃허브 : https://github.com/denist2322/SBstudy GitHub - denist2322/SBstudy Contribute to denist2322/SBstudy development by creating an account on GitHub. github.com CRUD 기본적으로 무엇이 되었든 프로그램(프로젝트)은 생성, 읽기, 수정, 삭제를 기준으로 작성해야 한다. Ut Class 생성 데이터를 입력받아야 할 때 데이터가 있는지 없는지 체크하기 위해 Utilty를 만들어 줄 것이다. package com.mysite.sbb.Ut; public class Ut { public static boolean empty(Object obj) { if (obj == null) { re..
import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] arr = new int[n]; int[] arrDp = new int[n]; String[] tmp = br.readLine().split(" "); for (int i = 0; i < n; i++) { arr[i] = Integer.parseInt(tmp[i]); arrDp[i] = 1; } ..
import sys input = sys.stdin.readline N = int(input()) arr = list(map(int,input().split())) arrDp = [1 for i in range(N)] for i in range(N): for j in range(i): if arr[i] > arr[j]: arrDp[i] = max(arrDp[i], arrDp[j]+1) print(max(arrDp)) 문제요약 증가하는 수열이 가장 긴 부분은? 설명 코드는 크게 어렵지 않을 것이다. 7 1 4 5 2 3 4 5 로 보자. 값을 하나하나 다 비교해서 수열이 가장 긴 부분에 대해서 가져가면 된다. 먼저 각 인덱스는 1의 수열을 가질 수 있어 1로 초기화 해주었다. for i in range(N..