전체 글 274

[프로그래머스] 최고의 집합

문제 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합 예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다. { 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 } 그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다. 집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는 solution 함수를 완성해주세요. [제한사항] 최고의 집합은 오름차순으로 정렬된 1차원 배열(list, vector..

[프로그래머스] 줄 서는 방법

문제 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다. [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완성해주세요. [제한사항] n은 20이하의 자연수 입니다. k는 n! 이하의 자연수 입니다. 풀이 전체 순열 경우의 수를 구한 뒤 문제를 풀면 답은 구해지지만, 시간 효율이 좋지 못하다. 풀이를 문제에 설명된..

[프로그래머스] 야근 지수

문제 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. [제한 사항] works는 길이 1 이상, 20,000 이하인 배열입니다. works의 원소는 50000 이하인 자연수입니다. n은 1,000,000 이하인 자연수입니다. 풀이 일은 한시간에 한가지를 1 만큼만 가능하기 때문에, 가장 많이 남을 일을 처리하는 것이 가장 효율적..

[프로그래머스] 스티커 모으기(2)

문제 N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다. 예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 사용할 수 없습니다. 스티커에 적힌 숫자가 배열 형태로 주어질 때, 스티커를 뜯어내어 얻을 수 있는 숫자의 합의 최댓값을 return 하는 solution 함수를 완성해 주세요. 원형의 스티커 모양을 위해 배열의 첫 번째 원소와 마지막 원소가 서로 연결되어 있다고 간주합니다. [제한 사항] sticker는 원형으로 연..

Scope

4가지 종류의 Scope 존재 Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용 Page : 페이지 내에서 지역변수처럼 사용 Page Scope PageContext 추상 클래스를 사용한다. JSP 페이지에서 pageContext라는 내장 객체로 사용 가능 하다. forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다. 사용방법은 Application scope나 Session scope, request scope와 같다. 마치 지역변수처럼 사용된다는 것이 다른 Scop..

Study/Java&Spring 2021.06.17

JSP

JSP 는 Servlet으로 바뀌어 작동한다. 다음과 같은 JSP 코드가 있다고 했을 때, 지시문 page language="java"를 통해 java로 작성된 다는 것을 알 수 있다. contentType="text/html; charset=UTF-8" 를 통해 UTF-8 형식을 가진 html 로 반환된다 라는 것을 알 수 있다. Scriptlet(스크립트릿) 자바 프로그래밍 코드를 사용할 수 있는 부분이다. 가장 일반적으로 많이 쓰이는 스크립트 요소 표현식(Expression) Java의 변수의 값을 화면에 출력하기 위해 사용합니다. out.parin(변수명) 이렇게 사용하던 것과 같은 결과를 나타낸다. 선언식(Declaration) 전역변수 선언 및 메소드 선언에 사용 주석 JSP 주석인 경우 Se..

Study/Java&Spring 2021.06.17

Request, Response

HttpServletRequest http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다. 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있습니다. Body의 Stream을 읽어 들이는 메소드를 가지고 잇습니다. 아래와 같은 방법으로 파라미터 이름을 이용하여 request를 할 수 있다. http://loclhost:8080/uri?파라미터이름=value 요청을 하면 아래 코드로 읽을 수 있다. request.getParameter("파라미터 이름"); 이 외에도 아래와 같은 것들이 있다. //URI 요청 request.getRequestURI(); //URL 요청 request.getRequestURL(); //Content 요청 req..

Study/Java&Spring 2021.06.17

Servlet(서블릿)

Servlet 이란? JAVA 웹 어플리 케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할 WAS에 동작하는 JAVA클래스 HttpServlet 클래스를 상속받아야 함 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation ..

Study/Java&Spring 2021.06.11

[프로그래머스] 풍선 터트리기

문제 일렬로 나열된 n개의 풍선이 있습니다. 모든 풍선에는 서로 다른 숫자가 써져 있습니다. 당신은 다음 과정을 반복하면서 풍선들을 단 1개만 남을 때까지 계속 터트리려고 합니다. 임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다. 터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으로 밀착시킵니다. 여기서 조건이 있습니다. 인접한 두 풍선 중에서 번호가 더 작은 풍선을 터트리는 행위는 최대 1번만 할 수 있습니다. 즉, 어떤 시점에서 인접한 두 풍선 중 번호가 더 작은 풍선을 터트렸다면, 그 이후에는 인접한 두 풍선을 고른 뒤 번호가 더 큰 풍선만을 터트릴 수 있습니다. 당신은 어떤 풍선이 최후까지 남을 수 있는지 알아보고 싶습니다. 위에 서술된 조건..

[프로그래머스] 숫자게임

문제 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다. 각 사원은 딱 한 번씩 경기를 합니다. 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개합니다. 그때 숫자가 큰 쪽이 승리하게 되고, 승리한 사원이 속한 팀은 승점을 1점 얻게 됩니다. 만약 숫자가 같다면 누구도 승점을 얻지 않습니다. 전체 사원들은 우선 무작위로 자연수를 하나씩 부여받았습니다. 그다음 A팀은 빠르게 출전순서를 정했고 자신들의 출전 순서를 B팀에게 공개해버렸습니다. B팀은 그것을 보고 자신들의 최종 승점을 가장 높이는 방법으로 팀원들..