코드 47

[Java] 백준 4485번 : 녹색 옷 입은 애가 젤다지?

1. 문제 https://www.acmicpc.net/problem/4485 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 2. 풀이과정 BFS를 사용한 이유 처음엔, dfs로 풀고 시간 초과가 났다. 생각해보니 이 문제는 가다가 해당 노드에 더 작은 비용으로 갈 수 있는 경우, 굳이 더 갈 필요가 없어서 버리기 때문에 bfs가 유리하다. dfs를 사용할 경우, 초반에 전체 탐색을 하기 때문에 시간 초과가 나는 것 같다. Priority Queue를 사용한 이유 bfs임에도 priority..

[Java] 백준 2133번 : 타일 채우기

1. 문제 https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 2. 풀이과정 채운다 = 빈칸없게! 1) n이 0이나 홀수면, 0을 출력 2) 짝수면 아래의 규칙을 따름 p[n] = (p[n-2]*3) + (p[n-4]*2) + (p[n-6]*2) + ... = (p[n-2]*3) + (p[n-4] + p[n-6] + ... )*2 2칸일 때, 가능한 건 3가지, 4칸일 때만 가능한 건 2가지, 6칸일 때만 가능한 건 2가지, ... , 그 뒤로 모두 2가지씩 있다. 여기서 6칸일 때만 가능하다는 말은 n=2, n=4일 때처럼 6보다 작은 타일에서 블럭을 어떻..

[Java] 백준12100번 : 2048(Easy)

1. 문제 https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 2. 풀이 과정 처음엔 쉬운 풀이 방법이 있을까 생각하다가, 안 떠올라서 그냥 모든 경우의 수를 다 돌려보고 생각해봐야겠다 하고 구현했는데, 통과가 되었다. 위로, 아래로, 왼쪽으로, 오른쪽으로 각각 0, 1, 2, 3으로 생각하고 5개를 뽑는 중복 순열을 만들었다. 선택한 차례대로 함수를 실행시켜 결과를 냈다. 1) 최대값 구하기 - 처음 값을 입력받을 때..

JSP (4) - JSTL

1. JSTL(Jsp Standard Tag Library)이란? JSP 표준 태그 라이브러리는 웹 개발을 위한 컴포넌트 모음으로, JSP페이지에서 스크립트릿을 사용하지 않고 간단하게 처리할 수 있는 방법을 제공한다. 2. JSTL core library 사용하기 JSTL은 core, XML, database등 여러 라이브러리가 존재하지만, 지금은 core library에 대해서만 알아볼 것이다. library prefix function URI core c 변수 지원, 흐름제어, URL처리 http://java.sun.com/jsp/jstl/core 1. JSTL 라이브러리 다운로드 받기 아래 사이트에서 원하는 버전을 다운받는다. https://mvnrepository.com/artifact/javax..

Servlet & JSP (4) - Cookie와 Session

0. Cookie와 Session이란? client 단위로 상태 정보를 유지할 때, 사용된다. client의 요청을 받은 server는 요청을 처리하고 응답을 해줄 때, Http protocol이 활용된다. Http protocol은 응답을 하고 나면 바로 연결을 해제하면서 사용된 정보가 유지되지 않는데 이를 stateless라고 한다. 이때, 정보를 유지하기 위해 Cookie와 Session을 사용한다. Cookie Session 공통점 Map 형식으로 관리하기 때문에 key값 중복X 차이점 Type javax.servlet.http.Cookie (Class) javax.servlet.http.HttpSession (Interface) 저장 위치 Client의 컴퓨터의 file Server의 메모리 저..

Servlet & JSP (2) - Page 이동

여기서 말하는 Page이동이란, 클라이언트의 요청을 받은 서버가 클라이언트에게 "이 페이지로 가!"라고 보낼 수 있는 것을 말한다. Servlet | JSP에서 html | Servlet | JSP 등으로 이동 가능하다. 두 가지 방법이 있으며, 특징을 파악하고 상황에 맞게 선택하여 사용해야 한다. forward(request, response) setRedirect(location) 사용법 String path="/경로"; RequestDispatcher dispatcher = request.getRequestDispatcher(path); dispatcher.forward(request, response); *클라이언트에 다시 돌려주지 않고 페이지를 바로 변경하기 때문에 request의 url을 얻어..

[Java] 백준 17404번 : RGB거리 2

1. 문제 https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 2. 풀이 과정 1 => N번째 집을 차례대로 색을 칠한다. 각자 자신의 앞의 집의 색깔만 피하면 된다. 단, 마지막 집은 첫 번째 집의 색깔도 고려해야하기 때문에 처음부터 첫 번째 집의 색에 따라 나눠 계산했다. 첫 번째 집 색에 따라 R[], G[], B[]를 만들어서 값을 업데이트해갔다. 이는 Dynamic Programming을 사용한 풀이 방법이라 ..

[환경설정] Eclipse의 Web Project와 DB(MySQL) 연결하기

1. DB(MySQL)-connector 설치 및 등록 1. mysql-connector 설치 - mysql에서 각 언어마다 연결해주는 connector를 제공하고 있으니, 가져다 쓰자! https://mvnrepository.com/artifact/mysql/mysql-connector-java 원하는 버전 선택 후, jar파일 클릭해서 다운받기 2. 웹프로젝트의 lib에 등록 WEB-CONTENT > WEB-INF > lib에 다운 받은 jar파일을 복사 & 붙여넣기하면 연결이 끝난다. 2. DB와 통신하는 JAVA코드 작성 *웹 프로젝트 뿐만 아니라, 일반 Java파일과 연결할 때도 같은 코드를 사용한다. *객체 지향을 위해, 코드를 분리해서 적었지만 DB관련 코드를 한 곳에 다 작성해서 사용해도 ..

[Java] 백준 1300: K번째 수

1. 문제 https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 2. 풀이과정 1. mid보다 작거나 같은 값 개수 세기 n이 5이고 검사하는 값을 mid = 6이라고 할 때, 6보다 작거나 같은 값의 개수를 세는 법은 아래와 같다. 1*1, 1*2, 1*3, 1*4, 1*5 2*1, 2*2, 2*3, 2*4 ,2*5 3*1, 3*2, 3*3, 3*4, 3*5 4*1, 4*2, 4*3, 4*4, 4*5 5*1, 5*2,..

[Java] 백준 2206번 : 벽 부수고 이동하기

1. 문제 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 2. 풀이과정 최단거리 구하기는 보통 bfs, 도착지점까지 경로를 구한다면 dfs를 주로 사용하는 것 같다. 이 문제는 최단거리를 구하는 문제로 bfs를 사용하여 풀었다. 최단거리만큼만 모든 경로를 탐색하기 때문에 최악의 경우(모든 경로 끝까지 전체탐색)을 막을 수 있다. 처음에는 boolean visited[N][M][2]로 3차원배열을 사용해서 visited..