회고 역시나 DP는 점화식이 가장 큰 관건인 것 같다 구현한 코드 자체는 매우 간단하지만 점화식 구하는 것이 어려웠다 점화식을 제대로 못 구하면 몇 시간을 붙잡고 있어도 코드가 산으로 가고 제대로 된 답을 구하기 어려워진다는 걸 다시 한번 느꼈다..😖 문제 풀이 완전 탐색으로 모든 부분 수열을 구하는 방식으로 구현하면 시간복잡도가 O(N^3) ~ O(2^N)까지 증가하기 때문에 매우 비효율적이다 가장 첫번째 문제인 11053번 문제만해도 최대 입력값이 1,000인데, 시간복잡도가 2^1000이 되면 당연히 시간 내 답을 구할 수 없다 최장 증가 부분 수열의 길이; 그리디한 방법 수열의 '길이'만 구하는 경우에는 그리디한 방법으로 해결할 수 있다 최장 길이를 구할 때 실제 부분 수열을 가지고 구하는 것이 ..
-
[BOJ] 가장 긴 증가하는 수열 (LIS) 시리즈; 그리디, DP, 이진탐색 (JavaScript)
회고 역시나 DP는 점화식이 가장 큰 관건인 것 같다 구현한 코드 자체는 매우 간단하지만 점화식 구하는 것이 어려웠다 점화식을 제대로 못 구하면 몇 시간을 붙잡고 있어도 코드가 산으로 가고 제대로 된 답을 구하기 어려워진다는 걸 다시 한번 느꼈다..😖 문제 풀이 완전 탐색으로 모든 부분 수열을 구하는 방식으로 구현하면 시간복잡도가 O(N^3) ~ O(2^N)까지 증가하기 때문에 매우 비효율적이다 가장 첫번째 문제인 11053번 문제만해도 최대 입력값이 1,000인데, 시간복잡도가 2^1000이 되면 당연히 시간 내 답을 구할 수 없다 최장 증가 부분 수열의 길이; 그리디한 방법 수열의 '길이'만 구하는 경우에는 그리디한 방법으로 해결할 수 있다 최장 길이를 구할 때 실제 부분 수열을 가지고 구하는 것이 ..
-
[BOJ] 1759. 암호 만들기 (JavaScript)
문제 url : https://www.acmicpc.net/problem/1759 회고 기본적인 조합 문제 + 최소/최대/정렬 조건 추가된 유형 조합을 구현할 수 있다면 크게 어려운 문제는 아닌데, 초반에 막 짰다가 시간 초과 에러가 났다 처음 맞은 코드처럼 굳이 자음과 모음을 분리해서 구할 필요는 없었고, 인덱스를 하나씩 증가시키면서 자음일 경우와 모음일 경우에 따라 분기 처리를 하는 것이 메모리도 좀더 적게 차지하고 구현도 편리하다 풀이 코드 처음 맞은 코드 조금더 최적화한 코드
-
[BOJ] 14502. 연구소 (JavaScript)
문제 url: www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 회고 처음 (대충) 봤을때 바이러스 확산으로 공간을 채우는 과정이 있기 때문에 BFS로 풀면 될 것 같았다 그런데 벽 3개를 무조건 세워야 한다는 조건을 보고 DP로 풀어야 하는 건가 싶었다 DP로 풀기에는 점화식을 찾아내기가 너무 어려울 것 같았다 그냥 일단 벽 3개를 brute force로 해보고 최적화를 해보자는 생각으로 구현했는데 그냥 이렇게 하는게 맞았다.. 풀이 과정 벽 3개를 세워야 하기 때문에 ..
-
[자바스크립트 성능 최적화] Ch04. 알고리즘과 흐름 제어
코드가 작다고 꼭 빠른 것도 아니고, 길다고 꼭 느린 것도 아니다 코드의 전반적인 구조도 실행 속도를 결정하는 주요 요인 중 하나 이 장의 내용들은 JS 뿐만 아니라 다른 언어에서도 종종 사용되는 최적화 기법 루프 프로그래밍 언어 대부분이 코드 실행 시간의 상당 부분을 루프에서 소비함 무한 루프, 오래 지속되는 루프는 성능에 심각한 악영향을 미칠 수 있음 종류 ECMA-262 3판에서는 4가지 타입의 루프를 정의 for-loop 초기화, 실행 조건, 실행 후 코드, 루프 몸체로 구성 초기화 부분 변수는 루프 레벨이 아니라 함수 레벨임에 유의 루프 몸체는 캡슐화됨 for (var i=0; i < num; i++) { // loop 몸체 } while-loop 실행 조건, 루프 몸체로 구성된 검사 후 루프(..
인기 글
-
Tue/Feb/18 [Java-Oracle] Day34-2. DBCP 데이터베이스 커넥션 풀2020 국비교육_Java 2020.02.18 16:48
Tue/Feb/18 [Java-Oracle] Day34. DBCP 데이터베이스 커넥션 풀 DBCP DataBase Connection Pool 데이터베이스 커넥션 풀 사용목적 : 접속 인원 많은 웹페이지에서 DB의 효율성/ 속도 높이기 위해 하나의 커넥션만으로 접속 처리할 경우 문제 역할 DBCP 매니저가 어느 정도 연결을 확보해 놓고 있다가, CLIENT 요청이 들어오면 연결, CLIENT 작업 종료되면 연결을 다시 DBCP 매니저에게 반환 만약 DB POOL을 5개 설정했다면, 접속 CLIENT가 2명 밖에 되지 않더라도 DB POOL은 항상 5개 열려 있음 JSP를 통한 Oracle SQL 직접 접속 1. TEST PROJECT 생성 1-1. WEB-INF > lib > 필요한 Server Jar ..
-
Mon/Feb/03 [Java] day23. 페이지 간 데이터 이동2020 국비교육_Java 2020.02.03 09:55
Mon/Feb/03 [Java] day23. - 페이지 간 데이터 이동 JSP 기본 (이어서) * 웹 페이지와 페이지 사이 data 전달하는 방법 1. HTML → JSP / Servlet data 전달에는 반드시 parameter가 필요 문자열만 가능 (ArrayList, ResultSet 등 객체 전달 X) - HTML - JSP *.jsp? # = # request.getParamter("#") - Servlet @WebServlet ("/*") 일 때는 request.getParameterValues()로 전달 받아서 String[] 으로 저장 url?parameter = # - - 2. JSP / Servlet..