전체 글 348

[프로그래머스] 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컨테이너..

[백준 1302번] 베스트셀러 - java

문제 설명 1. 책의 개수와 팔린 책들이 주어진다. 2. 하루 동안 팔린 책들 중 가장 많이 팔린 책을 return하면 된다. 3. 같은 숫자가 팔렸으면 사전순으로 먼저 오는 것이 오늘의 베스트셀러이다. 풀이 과정 1. 해쉬맵과 트리셋을 이용했다. 2. 해쉬맵의 getOrDefault 메소드를 이용하여 해당하는 Key(책이름)의 Value(팔린개수)를 구해주었다. 3. 이후 해쉬맵을 Value기준으로 정렬하여 가장 많이 팔린 순서대로 배치했다. 4. 그 해쉬맵의 최대 개수 Value를 갖는 Key들을 순서대로 가져와서 TreeSet에 저장하면 가장 사전의 앞에 해당하는 값을 구할 수 있다. 코드

알고리즘 공부 2021.11.10

마크업 / 마크다운

웹 페이지의 화면을 구성하는 HTML은 Hyper Text Markup Language의 약자이다. 여기서 markup이 어떤 의미일까? Markup이란 문서가 화면에 표시되는 형식을 나타내거나, 데이터의 논리적 구조를 명시하기 위한 규칙을 정의한 언어이다. 솔직히 저렇게 적어놓으면 뭔소린지 잘 이해가 안갈텐데 간단하게 말하자면 그냥 logic을 가진 것이 아닌 데이터의 표시를 위해 사용되는 언어라는 뜻이다. 즉 HTML의 역할을 생각해보면 알 수 있듯 마크업 언어는 내가 원하는 것들을 출력하는 데에 의의가 있는 언어이다. 그럼 마크다운 언어는 무엇일까? 사실 마크다운 언어는 마크업언어와 다른 점이 있는 언어는 아니다. 둘의 사용법은 동일하다. 그런데 굳이 마크다운 언어가 있는 이유는 마크업이 쓰기 귀찮..

이론 정리 2021.11.07

HTML 기본 태그 정리

HTML이란? Hyper Text Markup Language 하이퍼텍스트 문자를 서로 연결해주는 링크 마크업 표시한다 는 뜻 HTML설명 DOCTYPE html 현재 문서가 html로 작성한 웹 문서라는 것을 알려주는 것이다. html html의 시작 head 페이지의 속성과 정보를 설정 meta charset = “UTF-8” 페이지를 UTF-8로 인코딩 지정 title 웹 페이지의 제목을 나타내는 태그 여기까지는 웹 페이지의 본문에는 보이지 않으며, 브라우저의 탭 등에서 확인 할 수 이있다. body 웹 브라우저의 실제 내용 작성하는 장소 h1 ~ h6 제목을 나타내는데 사용 참고로 h1태그는 통상 문서에서 1번만 사용한다. p 하나의 문단 의미 html은 엄청 공백이나 엔터를 많이 넣어도 하나의 ..

이론 정리 2021.11.06

위클리 챌린지 끝 + 유종의 미

이번 10월 31일부로 모든 위클리 챌린지가 마무리되었다. 총 12개의 챌린지를 해결했고, 엄청 쉬운 문제부터 상당히 난이도 있는 문제들까지 나왔다. 아쉬웠던 부분은 로직보다는 구현에 관한 내용이 많아서 알고리즘 생각보다는 구현 방안에 초점이 맞추어져 있던 것 같다. 그래도 매번 연습하면서 아무리 어려워도 최대한 문제를 풀어 보기 위해 노력하였고, 그 결과 전체 풀이를 기간 안에 풀 수 있어 뿌듯했다. 그리고 가장 기뻤던 부분은 마지막주에 유종의 미를 거둘 수 있었던 것... 솔직히 말해서 해당 코드가 특출나게 효율이 좋다던지 독창적인 내용이 있는것 같지는 않았지만... 아무래도 동일한 코드가 여러개 제출된 걸 봐서는 블로그에 올린 글 덕분에 사람들이 코드를 이해하기 쉬웠어서 좋아요를 받았던 것 같다. ..

[프로그래머스] 최솟값 만들기- java

문제 설명 1. A와 B배열이 주어진다. 2. 각 노드별 곱한 숫자의 합을 구한다. 3. 다음 과정에서는 이전에 만들어진 숫자에 새로 (2번)과정을 반복한후 더한다. 4. 최소 숫자를 return 하면 된다. 풀이 과정 1. level2 문제라고는 생각도 들지 않을정도로 간단한 구현 문제이다. 2. A와 B를 모두 정렬해 준다. 3. A가 작은숫자이고 B가 큰숫자이면 된다. 4. 이유는 간단한데 앞에 올 숫자는 최소가 되어야 하는데, A의 숫자에 B의 숫자를 곱하는 것이다. 그래서 A는 앞에 무조건 작아야 하고, 뒤에 올 숫자가 지나치게 커지면 안된다. 5. 그렇게 곱한 숫자를 더해주면서 가면 된다. 워낙 간단한 문제라 따로 설명할 내용은 없을 듯 하다 코드

알고리즘 공부 2021.10.29

[프로그래머스] 더 맵게- java

문제 설명 1. 스코빌 지수, K가 주어진다. 2. 가장 작은 스코빌 지수부터 (최소값+2*최소다음값) 으로 더 큰 값을 만들 수 있다. 3. 스코빌 지수가 모두 K보다 크게 만드는 방법을 return하면 된다. 불가능하면 -1을 return한다. 풀이 과정 1. level2 문제라고는 생각도 들지 않을정도로 간단한 우선순위 큐 문제이다. 2. 우선순위 큐를 사용하면 작은 수부터 오름차순으로 배열된다. 3. 스코빌 지수를 작은 순서부터 꺼내가면서 더해줘서 구하면 된다. 4. 참고로 아무리 구해도 구할 수 없는 경우가 생기는데, 우선순위 큐의 크기가 1이 되면 구할 수 없는 것이므로 나가면 된다. 1) 맨 위 + 다음맨위*2 를 더해서 우선순위 큐에 넣는다. 2) 이걸 while이 K보다 작은 동안 계속 ..

알고리즘 공부 2021.10.27

프로그래머스 위클리 챌린지 12주차 - java

문제 설명 1. 피로도와 [필요피로도, 사용피로도]가 주어진다. 2. 던전을 도려면 필요피로도보다 피로도가 많아야 하고, 사용피로도는 그 던전을 돌면 소요된다. 3. 가장 많은 수의 던전을 도는 방법을 구하면 된다. 풀이 과정 // 마지막 위클리 챌린지이다. 그래서인지 굉장히 쉬운 문제로 장식했다. // 매우 간단한 브루트포스 - DFS or BFS 문제이다. 1. 모든 경우의 수를 탐색한다. 2. DFS를 돌면서 한번이라도 탐색한 곳은 다시 탐색하지 않고, 다른 모든 경우를 선택하여 진행한다. 3. 현재 피로도보다 필요 피로도가 크면 돌 수 없다. 4. 현재 피로도가 필요 피로도보다 많은 경우 방문하고, 이후 다시 해당 process를 반복한다. 5. 이걸로 구해진 경우가 끝나면 다시 방문을 하지 않은..