분류 전체보기 193

📑 국비_DAY44

수직메뉴 만들기 [1. 기본 골격] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 수직메뉴 인사말 연혁 오시는길 신상품소개 견적내기 상품QnA cs [2. CSS적용하기] 주석으로 설명을 달아두었으니 설명은 마지막에 정리에서 요약하도록 하겠습니다. 외부 CSS파일 연결하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 @charset "UTF-8"; /* class selector : .class_name */ /* 클래스가 submenu_type인 태그 선택 */ ul.submenu_type { list-style: none; } /* 클래스가 ..

📑 구간 합

구간합은 합 배열을 이용하여 시간 복잡도를 줄이기 위해 사용하는 특수한 목적의 알고리즘입니다. 코딩테스트에 출제되는 빈도가 높다고 하여 한 번 정리하고 가겠습니다. 구간 알고리즘의 핵심은 배열을 초기화하면서 합 배열을 구하는 것입니다. 이렇게 실제로 합을 구하기 전에 합 배열을 미리 구해놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 대폭 감소합니다. 예를들어, 위와 같이 배열A에서 구간의 합을 구해야 할 때, 합 배열을 구해놓으면, 실질적으로 합 계산을 수행할 때, 시간을 단축시킬 수 있습니다. [합 배열 안 구한 경우] (최악) O(N) -> idx 0 ~ 5까지의 합을 구하시오 for(int i=0; i idx 0 ~ 5까지의 합을 구하시오 S[5] - S[0] 단..

📑 너비 우선 탐색_BFS(Breadth First Search)

BFS(Breadth First Search) BFS는 그래프를 완전탐색하는 방법 중 하나로 너비를 우선하여 탐색하는 방법입니다. 즉, 출발하는 지점(시작노드)에서 인접 노드(가장 가까이 있는 노드를 우선적으로)를 모두 방문하고, 방문한 노드에서 다시 인접노드를 모두 방문하는 것을 반복하면서 탐색하는 방법입니다. 위의 그래프에서 탐색을 하는 과정을 순서대로 보면 다음과 같습니다 [1 -> 2 -> 3 -> 4 -> 5] 1번노드를 시작 노드라고 한다면 1번과 인접한 노드인 2, 3번 노드를 방문하게 됩니다. 2번 노드와 인접한 4, 5번 노드를 방문합니다. (모든 노드 탐색 끝) 3번 노드와 인접한 1, 5번 노드, 4번 노드와 인접한 2, 5번 노드, 5번 노드와 인접한 2, 3, 4번 노드는 앞에서 ..

📑 CSS_국비_DAY43

오늘은 html로 작성한 구조를 보기 좋게 꾸며주기 위한 CSS문법을 배웠습니다. WAS 언어를 배우는 과정에서 간략하게 정리하는 문법이므로 CSS와 HTML의 정리가 섞여있을 수 있습니다. CSS란? Cascade Style Sheet Html내의 style을 지정하는 언어입니다. 방법 Inline 방식 : Element내에 직접 지정합니다. 선언적 방식 : Document위쪽에 선언해서 사용() 외부파일 연결 : 다른 Document(html문서)에서도 재사용 가능합니다. [Inline 방식] 형식 -> [선언적 방식] 형식 -> selector { style속성 : 값; style속성 : 값; ... style속성 : 값;} Element(Tag) Selector : tag명 {} 태그명을 선택자(..

📑 알고리즘[Greedy]_백준_13305

도로는 수평방향으로 일직선 상위에 있다. 인접한 도시간의 거리는 다를 수 있다. 가장 처음위치에서는 반드시 기름을 채워야 한다. 키로당 1리터의 거리 이동(연비똥이네,,,) 주유소는 도시마다 한 개이고, 기름 가격은 다르다. 기름가격이 싼 곳에서 적절히 기름을 구매해서 최종적으로 소요되는 기름의 가격을 최소화 시켜라 기름 가격이 가장 싼곳에서 최대한 많이 사야한다. 변수의 최댓값을 생각했을 때, int형이 아닌 Long형을 사용해야 한다. 다음과 같이 입력예제로 예를 들어보자. 4 2 3 1 5 2 4 1 첫 번째 도시는 기름 가격이 5원으로 비싸지만, 기본적으로 이동해야 하기 때문에 최소한으로 삽니다. (5 * 2) = 10 두번째 도시는 기름가격이 저렴하기 때문에 구매하는데, 이때 다음 도시의 가격을..

📑 HTML_FORM_TAG_국비_DAY42

오늘은 HTML Forms와 관련된 태그를 배웠습니다. 대표적으로 브라우저에서 가장 자주 볼 수 있는 회원가입 또는 검색등의 작업을 이 태그를 이용하여 만들 수 있습니다. 브라우저에서 사용자가 요청하는 데이터를 서버로 전송하는 용도로 사용합니다. 사용자의 요청 또는 입력을 하나의 논리적인 그룹으로 묶어서 서버로 전송합니다. 지난시간에 서버에 두 가지 종류를 보면서 각각의 역할을 살펴보았습니다. HTTP서버는 전방에서 사용자의 요청을 필터링하고, WAS는 실질적으로 사용자가 요청한 데이터를 연산 하는 서버라고 했습니다. 그러면 어떤 방식으로 클라이언트가 보는 브라우저에서 서버로 데이터를 전송하는지를 알아보겠습니다. 데이터를 서버로 전송하는 방식으로는 다음의 두 가지 방식이 있습니다. [get] URL에 요..

📑 HTML_국비_DAY41

태그 설명 Ordered List, 순서 있는 리스트 [블록요소] Unordered List, 순서 없는 리스트 [블록요소] style="list-style: decimal;"속성을 사용하여 모양 결정 가능 리스트 각 행의 데이터를 정의 [블록요소] Dictionary List Dictionary Table, 리스트의 용어 또는 이름을 정의 Dictionary Data, 리스트의 용어 및 이름의 설명 또는 값을 정의 Defines bold text, 강조체 Defines important text, 강조체 테이블을 정의 Table Header, 테이블의 컬럼명을 정의. 기본적으로 Bold, Center속성이 있음 테이블에서 한 행을 정의 각 행마다 셀에 데이터를 정의, th에 맞는 데이터를 정의 행 합치..

📑 자료구조[queue]_백준_11866

출력형식만 맞춰주고, 큐를 이해하고 있다면 기본적인 개념으로 간단하게 풀이할 수 있는 문제입니다. [문제 분석] 환형큐에 대한 문제가 나왔습니다. 환형 큐 또한 기본 큐를 기준으로 만든것이기 때문에 값을 넣고 빼는 메커니즘은 동일합니다. 환형큐 내부가 요소로 가득찬 경우, front에 있는 값을 poll or remove하면 front의 위치가 한 칸 이동하기 때문에, 새로운 값을 offer or add할 때 rear의 위치가 기존에 front가 있던 위치로 이동하게 됩니다. 원활한 이해를 통해 그림을 보겠습니다. 그렇다면 원으로 둘러쌓인(환형큐) 사람들을 탐색하면서 K번째 사람들을 연쇄적으로 배출할겁니다. 이때, 큐의 요소를 중간부터 삭제하고자 하는 것은 기본적인 큐에대한 이해가 부족한 것입니다. 물론..

📑 Tomcat다운로드&환경설정_HTML_국비_DAY40

지난 시간까지 학습했던 JDBC의 핵심은 버튼 혹은 스윙 프로그램이 아닙니다. DB모델을 모듈화는 과정이 중요합니다. 작업을 하는 언어만 자바에서 html로 바뀔 뿐입니다. Dao, Dbservice, vo의 역할과 dao가 sql명령을 처리하는 과정을 정리해서 이해하고 공부해야 합니다. 모듈화 된 기능에 대한 이해와 생각이 필요합니다. 지금까지는 자바와 DB를 연동하여 개인적으로 사용할 수 있는 데스크롭 프로그램을 해왔다면, 앞으로는 불특정 다수의 사용자가 브라우저의 주소만 알고 있다면 누구나 공용으로 이용할 수 있는 웹서버를 사용하여 웹 응요 프로그램을 학습하겠습니다. 기본적인 웹서버와 사용자의 상호작용은 다음 그림과 같습니다. 기본적인 웹 애플리케이션을 만들기 위해서 웹 서버를 구성하는 HTTP S..

📑 2022KAKAO BLIND RECRUITMENT[신고결과받기]_해시LV.1

문제와 예시를 읽어보면 생각보다 복잡하지 않은 문제입니다. 필자는 중복을 제거하기 위해 HashSet을 사용했습니다. 문제를 읽어보고 지켜야할 조건을 분석해보면 다음과 같습니다. 한 번에 한 명의 사용자만 신고할 수 있다. 같은 사람에게 여러 번 신고당한 경우 1이상 count하지 않는다. k번 이상 신고를 당한 사람은 이용이 정지당하며, 이용이 정지당한 사람을 신고한 사람에게 메일을 보낸다. 이때 id_list에 있는 사람들의 각각 메일을 받은 횟수를 count해야 한다. 위의 조건들을 살펴보자면 일단 중복을 제거해야 합니다. 중복의 조건은 신고 당한 사람을 기준으로 해당 사람을 신고한 사람이 중복되면 안됩니다. -> 필자는 이 부분에서 HashSet을 사용하기로 마음먹었습니다. report의 요소를 ..

📑 알고리즘[Greedy]_백준_1931

[문제 분석] 회의시간이 겹치지 않도록 최대한 많은 회의가 진행되어야 합니다. 그렇다면 어떤 회의를 먼저 진행시켜야 할까요? 시작시간이 빠른 회의를 먼저 배치하게 된다면, 회의시간이 얼마나 걸리는지까지 고려해야 하기 때문에, 종료시간을 기준으로 종료시간이 빠를수록 다음 회의를 배치하고 최대한 많은 회의를 진행할 수 있습니다. 주어진 예제 입력값에는 종료시간이 겹치는 경우가 없지만, 문제를 풀기 위해서는 겹치는 경우도 생각해 보아야 합니다. 예를 들어 (2 2), (1 2)이렇게 두 가지의 회의가 있다고 했을 때, 시작시간이 1인 것을 먼저 배치하면, 해당 회의가 끝나자마자 (2 2)회의를 진행할 수 있습니다. 하지만 (2 2)를 먼저 진행하게 되면 회의가 진행되는 시간이 겹치기 때문에 그 뒤에는 (1 2..

📑 시간복잡도

알고리즘 문제를 해결할 때, 가장 좋은 방식은 문제를 이해하고 어떤 자료구조를 사용하여 해결할 것인가에 대한 사고과정이 중요합니다. 알고리즘을 선택하는 기준으로 시간복잡도를 고려해야 하기 때문에 오늘은 이에 대해서 공부해보겠습니다. 자료구조를 알고 사용하는 것이 중요하지만, 각 자료구조마다 사용되는 시간 복잡도가 어느정도인지를 알면 선택에 있어 더 효율적인 방향을 잡을 수 있습니다. 하루 만에 모든 시간복잡도에 대한 공부와 예시를 들기는 어렵기 때문에,,, 기본 개념만 잡아두고, 앞으로 공부를 하면서 해당 복잡도에 관한 알고리즘을 풀게 되면 예시로 들면서 내용을 추가하겠습니다. 1. 시간복잡도 표기법 알아보기 먼저 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말합니다. 일반적으로 ..