주어진 수열 내에서 증가하는 부분수열 LIS 중 최대길이를 구하기 - 주어진 수열 a[]와 수열의 i번째 수까지의 LIS 최대길이를 저장하는 d[]를 생성 - 부분수열이 존재하지 않을 때의 기본값인 1로 d[]를 초기화함 - 2부터 수열의 길이 n까지 반복하여 d[]에 값을 저장한다. - 인덱스 i 이하인 수 j 중에서 a[i]보다 크면서, d[i]-1보다 큰 d[j]를 찾으면 d[i]=d[j]+1 로 업데이트한다. - 저장된 d[] 에서 최대값이 존재하는 LIS의 최대길이이다. import java.util.Scanner; public class BOJ11053 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);..
분류 전체보기
2*n짜리 직사각형을 1*2, 2*1짜리로 채우는 방법의 갯수를 구하기 가장 끝에 1*2, 2*1를 두는 각각의 방법을 d[n-2], d[n-1] 라고 한다. d[n]=d[n-2]+d[n-1]이다. n=1일 때 1(2*1짜리 하나)로 재귀를 빠져나온다. n=2일 때 2(1*2짜리 두 개)로 재귀를 빠져나온다. import java.util.Scanner; public class BOJ11726 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int x=sc.nextInt(); int[] d=new int[x+1]; System.out.println(operate(x, d)); } static int operate(..

html, css, js를 배우고있다. 입문은 노마드코더로 했는데, 좀더 세세하고 체계적인 강의를 찾아다니다가 유튜브에서 엘리님의 강의를 발견! 엘리님의 프론트엔드 입문 재생목록을 싹다 봤다. 마지막에 유튜브 클론코딩하는 프로젝트가 있길래 도전했다. 일단 완성본! 모바일 버전,제목이 길면 2줄정도만 보이도록 설정했다. 삼각형 버튼으로 토글한다. 모바일 기준으로 우선 만들고, 테블릿형태로 확장했다. 너비가 일정이상일 때, 가장 밑에 위치했던 추천영상리스트를 가로로 정렬되도록 재배치했다. 그리고 영상의 뒷배경을 검정색으로 지정하여 배경과 잘 어우러지도록 설정함. 이 프로젝트에 엄청난(?) 기술이 쓰인 건 아니지만, 보통 프론트엔드 개발자들이 마주치는 상황에서 어떤 식으로 생각하는지 배울 수 있었다. 미리 폰..

원래 올해 초에 발급받았던 내일배움카드로 국비 컴퓨터강의를 들을생각이었다. 나는 코딩을 해본 경험이 있고, 짜여진 커리큘럼을 반강제로 따라가는것보다 스스로 부족한 부분을 찾고, 자율적으로 공부하는 방식이 잘맞는다. 그래서 국비학원을 많이 검색해보고 실망했다. 강의의 질이나 강사, 학생들의 낮은 의욕 등은 사실 국비학원의 시스템적인 문제가 크다고 생각해서 내가 잘하면 되지 라고 생각했다. 그런데 아침 9시부터 6시까지, 수준이 천차만별인 학생들을 6개월이나 데리고 간다는 게.... 그런 그룹에 속하고 싶지 않다는 생각이 강하게 들었다. 아무리 의지가 있다한들, 그 안에서 내가 원하는 결과를 얻기 힘들어보였다. 그 그룹의 상위권이 된다고 하면 얄팍한 우월감이 들 것같기도 하고, 하위권이라면 그것나름대로도 힘..
2*n짜리 직사각형을 1*2, 2*1, 2*2 짜리로 채우는 방법의 갯수를 구하기 가장 끝에 1*2, 2*1를 두는 각각의 방법을 d[n-2], d[n-1] 라고 한다. 이때, 끝이 1*2를 두개 두는 것은 2*2를 하나 두는 것과 같다. 즉, d[n-2]에 대해 2가지 경우가 있는 것이므로 d[n]=d[n-2]*2 + d[n-1] 이다. n=1일 때 1(2*1짜리 하나)로 재귀를 빠져나온다. n=2일 때 3(1*2짜리 두 개, 2*2짜리 하나)로 재귀를 빠져나온다. import java.util.Scanner; public class BOJ11727 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int x=sc..
주어진 수열 내에서 증가하는 부분수열 LIS 중 최대길이와 그 수열 구하기 - 주어진 수열 a[]와 수열의 i번째 수까지의 LIS 최대길이를 저장하는 d[]를 생성 - i번째 수가 LIS가 성립하도록 영향을 준 수열의 인덱스를 v[i]에 저장함 - 부분수열이 존재하지 않을 때의 기본값인 1로 d[]를 초기화함 - 2부터 수열의 길이 n까지 반복하여 d[]에 값을 저장한다. - 인덱스 i 이하인 수 j 중에서 a[i]보다 크면서, d[i]-1보다 큰 d[j]를 찾으면 d[i]=d[j]+1 로 업데이트한다. - 이때, v[i]에 인덱스 j를 저장한다. - 저장된 d[] 에서 최대값이 존재하는 LIS의 최대길이이다. - d[]의 최대값을 가진 수의 인덱스를 ansIndex에 저장하고, a[ansIndex]를 ..