분류 전체보기 189

📑 우선순위큐(Priority Queue)

오늘은 다익스트라 문제를 본격적으로 풀어보기 전에 먼저 그래프 문제에서 자주 사용하는 우선순위 큐라는 자료구조에 대해 정리를 해보겠다. 결국에 큐이기 때문에 add, poll, peek 등의 연산을 수행하지만, 하는 일과 내부 구조는 기존의 큐와 완전히 다르다. poll이나 peek의 연산으로 추출되는 원소는 기존 큐의 연산순서인 FIFO에 따라서 제일 먼저 들어온 요소가 나오는 것이 아니라, 말 그대로 현재 큐 안에서 제일 우선순위가 높은 요소가 먼저 나온다. 이는 우선순위 큐가 기존 알던 큐가 아닌 힙(heap)이라는 자료구조로 구현되기 때문에 가능하다. 가장 많이 사용하는 형태는 클수록 우선순위가 높은 형태 or 작을수록 우선순위가 높은 형태이다. 어떤 우선순위 큐의 front에 위치하는 원소가 가..

📑 그래프(Graph)의 종류

용어 설명 그래프(Graph) 노드와 간선을 하나로 모아 놓은 자료 구조 정점(Vertex) 노드라고도 하며, 정점에는 데이터가 저장된다. 간선(Edge) 링크라고도 하며, 노드간의 관계를 나타낸다. 인접 정점 (adjacent vertex) 간선에 의해 직접 연결된 정점 차수(degree) 무방향 그래프에서 하나의 정점에 인접한 정점의 수. 무방향 그래프에 존재하는 존재하는 정점의 모든 차수의 합 == 그래프의 간선의 수 * 2 진출 차수 (out-degree) 방향 그래프에서 사용되는 용어로, 현재 노드에서 외부로 향하는 간선의 수 방향 그래프에 있는 정점의 진입 차수 또는 진출 차수의 합 == 방향 그래프의 간선의 수 진입 차수 (in-degree) 방향 그래프에서 사용되는 용어로, 외부 노드에서 ..

📑 최종프로젝트_DAY2~4

DAY2에는 점심시간에 점심을 먹고 짧게 진행상황 확인만 하면서 오늘할 회의 내용을 정리했다. 프로젝트 이름을 하나씩 생각해보는 것과 각자 유즈케이스 다이어그램을 하나씩 작성해오는 것이 목표였는데, 프로젝트 이름은 너무 촌,,,스러워서 하루만 더 고민해보기로 했고, UML은 한 팀원이 엄청 열심히 준비해 주어서 다함께 약간의 보완을 거친 후에 다음과 같은 UML을 완성했다. [ UML ] 간단하게 앞으로 개발할 웹 페이지를 Top-Down방식으로 설계를 했다. 크게 한 페이지 단위로 설계를 하고, 세부 기능들을 추가해가면서 모듈을 추가할 예정이다. 기능을 기준으로 나눈 단위는 다음과 같다. 로그인/회원가입(소셜 로그인 api) 메인 페이지(모든 사용자) 마이 페이지(로그인 한 사용자만) 학습 카드보면서 ..

📑 ORM_DB프레임워크_국비_DAY72

ORM(Object Relationship Mapper) -> 데이터베이스 프레임워크를 통칭하는 말 DB와 객체를 연결시켜주는 프레임워크 (DB와 자바의 객체(Vo)와 자동으로 mapping 해주는 객체) DB Object처리하는 프레임워크 종류 Hibernate(ORM성격이 짙다. 객체의 속성명과 DB의 컬럼명을 일치시켜서 연결시켜놓는다.) : SQL 문장X 자바에서 지원하는 객체는 JPA가 있다. Mybatis(SQL Mapper) iBatis : 2.x에 대한 명칭 Mybatis: 3.x에 대한 명칭 sql문장으로 구성된 id를 이용해서 호출을 하면, SqlSession이 해당 sql명령을 처리해준다. [ MyBatis 작업 순서 ] 기존에 DB에 접근할때 사용했던 DBService를 사용하지 않고..

📑 백준[자바]_1992_쿼드트리_분할정복

오늘은 색종이 문제에 이어서 두 번째로 분할정복의 문제를 풀이했다. 이번 문제는 쿼드트리를 생각해보는 문제로 트리의 개념이 직접적으로 코드에 구현되지는 않지만, 한 번쯤 생각해볼만한 문제이다. 우리가 평소에 알고 있던 트리는 이진트리로서 한 노드가 가질 수 있는 자식노드가 최대 2개인 트리의 구조이다. 그렇다면 쿼드 트리는 무엇일까? 말 그대로 한 노드가 가질 수 있는 자식 노드가 최대 4개인 트리의 구조이다. 그림상으로 보면 다음과 같다. 그렇다면 이 문제에서 쿼드트리를 어떻게 적용해볼수 있을까? 문제에서 주어지는 조건을 한 번 생각해보자 [ 문제 접근 & 알고리즘 ] 0과 1로만 구성된 흑백영상이 모두 0이면 괄호없이 0, 모두 1이면 괄호없이 1을 출력한다. 이때, 흑백영상을 자르는 기준을 왼쪽위,..

📑 백준[자바]_10986_나머지합_구간합

오늘은 누적합 카테고리 중에서 네번째 골드 문제를 풀었다. 이전에 구간합에 대한 개념을 정리하고 동적계획법을 풀면서 모듈러연산의 분배법칙을 익혀두었더니 다른 골드문제에 비해 쉽게 풀렸던 것 같다. [ 문제풀이 & 접근 ] 시간 초과가 나지 않기 위해서는 구간합을 구해야 하는데, 1차원 배열의 경우 dp[k]를 0~k까지의 구간합이라 하고, i

📑 XML_Naver검색API_국비DAY71

웹을 구현하는 프로그래밍 언어는 굉장히 다양하다. 하지만 프로그래밍 언어마다 사용하는 데이터 타입이 다르기 때문에 서로 다른 언어끼리는 직접적인 통신이 불가능하다. 그렇다면 어떤 방식으로 하나의 웹 서버에서 다른 언어로 구현한 데이터들을 송수신할 수 있을까? 이를 해결하기 위해 공통 DataType을 가지는 XML과 JSON이 존재한다. 서로 다른 언어들은 직접적으로 통신을 할 수는 없지만 아래 그림과 같이 공통 DataType인 XML과 JSON을 거치게 되면 서로 통신할 수 있도록 서비스를 제공한다. 오늘은 XML을 pharsing해보는 실습을 해보기 위해서 네이버에서 제공하는 검색 Open API를 사용해보겠다. [ Naver 검색 Open Api사용하기 ] 다음 사이트에 접속한다. https://..

📑 백준[자바]_16139_인간컴퓨터상호작용_누적합_구간합

오늘은 백준 단계별로 문제풀기에서 누적합으로 분류된 문제를 풀이하겠다. 이전에 구간합에 대해 정리한 내용이 있어서 쉽게 풀리겠지 하고 생각을 했는데, 아니나 다를까 틀렸다. ㅜㅜ 한 가지 간과한 사실을 인지하고 코드를 수정해서 정답을 맞추었다. 처음에 생각했던 알고리즘 접근 과정과 간과했던 부분, 수정한 부분을 정리하고자 한다. 구간합에 대한 내용을 아직 잘 모른다면 여기를 눌러서 공부하고 오기를 바란다. [ 접근 과정 : 오류 있는 코드] 이 문제의 입력값의 최악의 경우를 보면 어마무시하다. 문자열의 길이는 최대값이 200,000, 최대 문제의 수도 200,000개, 구간의 최대 길이도 200,000이다. 이 문제를 단순히 반복문 만을 이용해서 풀이한다면 볼것도 없이 시간초과가 날것이다. 그렇다면 시간..

📑 연애대작전_SemiProject_기능정리_즐겨찾기

오늘은 필자가 구현해보고자 했던 기능 중에서 가장 장시간에 걸쳐 완성한 기능이다. 단순하게 생각해낸 알고리즘으로 접근을 했는데 생각보다 많은 난관에 봉착했었다. 구글링을 통해 검색을 해보아도 필자의 검색 능력이 부족한 탓인지,, 관련된 내용을 찾지 못했다. 기능을 구현하기에만 앞서서 효율성은 하나도 고려하지 않았다는 단점이 있다. 일단 스스로 구현한 기능을 정리하고 차후에 더 나은 방법을 발견하게 되면 추가로 수정해서 정리하도록 하겠다. 혹시라도 이글을 읽고 피드백을 주신다면 감사히 받겠다. 프로젝트의 모든 내용을 설명할 수는 없기 때문에 기본적인 내용만 설명해주고 추가한 기능에 대해서 정리하고자 한다. [ 기본 상황 설명] 메인 페이지에서 코스 추천을 누르면 타인이 등록한 데이트 코스들이 조회수 순서대..

📑 PhotoGallery_국비실습_기능정리_세션만료

오늘은 로그인한 사용자에게 부여한 세션값을 사용해서 모든 페이지에서 해당 사용자의 정보를 이용할 수 있도록 세션 트래킹 기법을 활용하는데, 이 세션에는 유효시간이라는 것이 존재한다. 이 세션이 만료된 경우 어떻게 처리해야 하는지에 대해 정리해보고자 한다. 세션의 기본적인 유효시간은 30분이라고 하는데, 이 30분이 접속시간이 아니라 브라우저에 접속시 아무런 행동도 하지 않고 30분 동안 있을경우 세션의 유효시간이 끝난다고 한다. 처음 접했을 때는 시간이 꽤나 여유로운데? 굳이 세션 만료까지 처리해야 하나?라는 의문은 있었지만, 이 의문은 얼마가지 않아 해결되었다. 필자가 따로 진행하던 연애 대작전 프로젝트에서 기능을 추가하던 중 중간에 막혀서 구글링과 다른 공부를 하다가 다시 실행해보았는데, 예상치 못한..

📑 연애대작전_SemiProject_기능정리_로그인엔터처리

서블릿과 웹 어플리케이션 서버에 대해서 처음 공부를 시작함과 동시에 국비지원 학원 사람들과 프로젝트 스터디를 2주동안 진행하였다. 이전에는 콘솔을 사용하여 자바와 DB만을 이용한 JDBC를 실습했었는데, 이후에는 조금 더 확장하여 웹 페이지에서 동적인 컨텐츠를 줄 수 있는 웹 애플리케이션 서버를 만들어보는 프로젝트를 진행했다. 이번 프로젝트의 제목은 연애대작전으로 로그인 회원가입이 주요 기능이며, 시간이 남아서 추가적으로 데이트 코스를 만들거나 조회할 수 있는 기능을 구현했다. 이번에 필자는 로그인 기능을 구현했는데, 세션 트래킹을 최대한 구현해보고자 노력했다. 로그인 기능을 구현하는 과정에서 생각해보니 로그인 버튼을 눌러야만 폼 데이터가 서버로 전송이 되었다. 일반적으로 기본적인 사이트는 버튼이 있기는..

📑 최종프로젝트_DAY1

이제 어느덧 수료를 2달 앞두고 있는 상황이다. 아직 배워야 할 부분이 너무나도 많지만, 수료하고 어떻게 취업할지 막막하긴 하지만,,, 우리는 공부를 멈추지 않는 개발자이니까 지금할 수 있는 일에 대해 최선을 다하고자 한다. 다가오는 수료를 맞이하면서 이력서에 첨부할 포트폴리오를 만들기 위해 최종적인 프로젝트를 시작했다. 팀원은 필자를 포함한 3명으로, 개발에 사용할 언어는 java, oracle, javascript, spring이다. 만들고자 하는 프로젝트의 주제를 선정하고, 오늘 처음으로 만나서 개략적으로 구현하고자 하는 기능들을 생각해보고 DB를 모델링하는 시간을 갖게 되었다. 이번 프로젝트에서 만드는 프로젝트는 웹에서 플래시카드를 구현하려고 한다. 카드의 내용은 기술면접 단어 암기장으로, 프로젝..