전체 글 385

파트1. 빈 칸 채우기 - Up and down

문제 설명 UP AND DOWN 게임은 다음과 같은 규칙에 따라 진행하는 게임입니다. 먼저 출제자가 1 이상 ~ K 이하인 자연수 중 하나를 마음속으로 생각합니다. 게임 참가자는 1 이상 ~ K 이하인 자연수 중 아무거나 하나를 말합니다. 만약, 참가자가 말한 숫자가 출제자가 생각한 숫자보다 작다면 출제자는 "UP"이라고 말합니다. 만약, 참가자가 말한 숫자가 출제자가 생각한 숫자보다 크다면 출제자는 "DOWN"이라고 말합니다. 참가자는 출제자가 말하는 "UP", "DOWN" 힌트를 잘 활용해서 출제자가 처음에 생각한 숫자를 맞추면 됩니다. 출제자가 처음에 생각할 수 있는 자연수 범위 K, 게임 참가자가 말한 숫자가 순서대로 담긴 배열 numbers, 게임 출제자가 참가자가 말한 각 숫자에 대해 답한 내..

파트1. 빈 칸 채우기 - 지그재그 부분 수열

문제 설명 수열 S가 주어질 때, 이 수열의 연속된 부분 수열 중 지그재그 수열 길이의 최댓값을 구하려 합니다. 지그재그 수열이란 첫 번째 원소부터 인접한 원소의 차이가 증가 → 감소 → 증가 → 감소 ... 혹은 감소 → 증가 → 감소 → 증가 ... 순으로 나타나는 수열을 말합니다. 단, 수열의 길이는 3 이상이어야 합니다. 예를 들어 수열이 [ 2, 5, 7, 3, 4, 6, 1, 8, 9]인 경우, 연속된 부분 수열 [5, 7, 3, 4]가 부분 수열 중 가장 긴 지그재그 수열이 됩니다. 부분 수열 중 가장 긴 지그재그 수열의 길이를 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다. 1. 각 숫자가 바로 이전 숫자보다 증가했는지, 혹은 감소했는지 표시한 배열을 만듭니다. 1-1. "증가"는 ..

파트1. 빈 칸 채우기 - 스택으로 큐 구현

문제 설명 스택 두개를 이용해 Queue 자료구조를 만들었을 때, Queue 자료 구조의 pop(또는 dequeue) 메소드를 구현하려합니다. Queue란 먼저 삽입한 데이터를 먼저 빼내는 자료구조를 뜻합니다. pop 메소드를 만들기 위해 다음과 같이 프로그램 구조를 작성했습니다. 1. 스택2가 비었다면 스택1에 아무것도 남지 않을때까지 스택1에서 pop한 값을 스택2에 push 한다. 2. 스택2에서 pop한 값을 리턴한다. 두 어레이리스트 stack1, stack2가 매개변수로 주어질 때, 두 어레이리스트를 스택으로 이용해 Queue 자료 구조의 pop 메소드를 구현하려합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 메소드와 매개변..

[백준 16929번] Two Dots - java

문제 설명 1. 공의 크기 X,Y 그리고 각 공들이 chr로 주어진다(문자열로 주어진걸 chr로 받는다.) 2. 같은 문자의 공들은 서로 연결 가능하다. 3. 공을 연결하여 사이클이 완성되도록(시작점부터 다른 점을 연결해 다시 시작점까지 연결될수 있도록) 할 수 있는지 구하면 된다. 4. 사이클의 크기는 4이상이 되어야 한다(가장 작은 사이클은 4이다. 연결점이 4개이기 때문) 풀이 과정 1. 기초적인 DFS문제에 적절한 조건을 추가한 문제이다. 난이도가 높은 편은 아니라 금방 이해할 수 있을 것이다. 2. 기존에 수행할 수 있는 DFS에 추가로 count(4이상으로), start Dot를 저장하여 비교하면 된다. 3. 즉 DFS를 수행하여 현재점부터 상하좌우로 이동하는 xTo, yTo를 만든 후, 그 ..

알고리즘 공부 2021.11.27

[백준 1018번] 체스판 다시 칠하기 - java

문제 설명 1. N, M크기의 체스판이 주어진다. 2. 8x8크기로 잘라서 위아래양옆으로 다른 색깔이 와야 한다. 3. 최소한으로 체스판을 칠하려면 어떻게 해야 하는지 구하면 된다. 풀이 과정 1. 간단한 브루트포스 문제이다. 2. 먼저 체스판의 색은 두 개이기 때문에 브루트포스를 진행하기 앞서 bit로 처리하기 위해 boolean값으로 바꾸어 준다. 물론 그냥 시간복잡도를 줄이기 위함으로 굳이 바꾸지 않아도 된다. 3. 전체 크기를 0,0위치를 기준으로 오른쪽, 아래 8칸씩 짤라서 진행한다. 체스판의 최대 X축의 길이가 N이라고 하면 N-8까지 잘라서 구하면 된다. 4. 여기서 나는 조금 새로운 방법으로 문제를 해결했다. -> 자르는 기준이 된 체스판의 기준으로 상하좌우는 그것과 달라야 한다. -> (..

알고리즘 공부 2021.11.21

JSP에서 include 두 가지 방식(지시자, 액션태그)의 차이 및 활용

먼저 include를 사용하면 원하는 파일을 기존 파일에 삽입시켜 사용할 수 있다. jsp파일이나 jspf파일을 include하면 된다. jspf란 Java Server Page Fragment의 약자로 JSP의 일부분(조각)으로 다른 JSP파일에 포함되도록(include)만들어졌다. 반복적으로 사용되는 것을 jspf파일로 만들어서 사용한다. 이를 사용하는 이유는 include용 파일들을 더 잘 구분하기 위해서이다. 지시자 호출한 페이지 내에 include되는 페이지의 소스가 그대로 복사된다. 즉 해당 코드를 가져와서 처리한다. 액션태그 include한 페이지로 넘어가서 해당 페이지의 처리가 완료된 후 기존 페이지로 돌아간다. Include 지시자 액션 태그 처리방법 소스의 삽입 해당 include파일의..

쿠키와 세션의 개념, 차이와 사용법 정리 + 어플리케이션

쿠키 쿠키란 http프로토콜에서 웹 브라우저에서 서버로 데이터를 요청하면, 서버 측에서는 로직을 수행한 후에 데이터를 웹브라우저에게 응답함. 그리고 서버는 웹브라우저와의 관계를 종료한다. 이 때 쿠키를 사용하면 연결이 끊겼을 때 어떤 정보를 지속적으로 유지할 수 있다. 쿠키는 서버에서 생성해서 클라이언트측에 정보를 저장한다. 이후 서버에 요청할 때 마다 쿠키의 속성값을 참조/변경할 수 있다. 4kb의 용량을 가지며, 최대 300개까지 데이터 정보를 가질 수 있다. 쿠키 전달 과정 javax.servelt.http패키지의 Cookie클래스를 사용하여 쿠키 생성 해당 쿠키에는 웹 브라우저 판별용 정보가 포함되어 있음. 쿠키 속성 설정 웹 서버가 요청에 응답할 때 response객체에 저장 사용자 브라우저 저..

[프로그래머스] H-Index- java

문제 설명 1. 논문의 인용 횟수가 적혀있는 citations배열이 주어진다. 2. 인용 횟수가 n번 이상인 논문이 n개일 때 최대의 n을 구하면 된다. ex) 3,4,2,3,3 -> 2번인용 1개, 3번인용 3개, 4번인용 1개 풀이 과정 1. 굉장히 간단한 배열 문제이다. 2. citations배열을 정렬해 준다. 참고로 내림차순배열하면 간단한데 나는 그냥 정렬해서 뒤에서부터 진행한다. 3. 어떤 논문이 N번 인용되었다고 하면 그 논문은 N-1번보다, N-2번보다, N-3번......보다 더 많이 인용되었다는 것이다. 4. 말하자면 4, 4, 3, 3, 2, 1, 1, 1 번 인용되었다고 하면 4번인용 -> 2개 3번인용 -> (2개) + 2개 2번인용 -> (2개 + 2개) + 1개 1번인용 -> ..

알고리즘 공부 2021.11.20

JSP기본 개념

JSP JSP 개념 Java Server Pages 서버에 등록해 두었다가 웹 브라우저가 서버에 특정 데이터를 요청하면 이를 웹 브라우저로 전송해서 보여주는 기술중 하나임. HTML내부에 자바 코드를 삽입하는 형식이다. 서블릿은 java언어를 이용하여 문서를 작성하고 출력개체를 이용해서 HTML 코드 삽입. JSP는 이와 반대로 HTML코드에 JAVA언어를 삽입하여 동적 문서를 작성한다. 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다. 기초적인 서블릿은 화면 인터페이스 구현에 너무 많은 코드를 필요로 했기 때문 이러한 서블릿 작성 없이도 간편하게 웹프로그래밍을 구현하게 만든 기술이 JSP이다. JSP의 특징 동적 웹 어플리케이션 컴포넌트이다. 클라이언트의 요청에 동적 작동하여 HTML페..

Servlet 기본 개념

서블릿 서블릿 개념 클라이언트 요청을 처리하고, 그 결과를 다시 클라이언트에게 전송하는 규현 규칙을 지킨 java program(클래스) 서버에서 웹페이지 등을 동적으로 생상하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램 서블릿은 java내에 HTML태그가 삽입된다. 자바언어를 웹어플리케이션에 조금 더 개발하기 쉽게 하기 위해 만든 API이며, 이 규약에 맞는 라이브러리나 클래스들을 상속 및 구현하여 만든 클래스이다. 서블릿의 특징 동적 웹 어플리케이션 컴포넌트이다. 클라이언트 요청에 동적 작동한다. 응답은 HTML이용 자바의 Thread를 이용하여 동작. MVC패턴에서는 Controller로 사용된다. 작동순서 클라이언트에서 Serlvet요청 서버에서 요청이 있을 때마다 servlet컨테이너..