분류 전체보기 193

📑 MVC_국비Day79

본격적으로 스프링에 대해 학습하기 전에 지금껏 해왔던 Model2 패턴을 정리하고, 스프링에서 사용할 MVC패턴과 비교분석하면서 MVC패턴의 구조를 학습해보자. 모델2 패턴은 사용자 요청사항마다 각각의 서블릿(서버에서 실행되는 서비스 객체)이 존재한다. 사용자의 요청사항에 100가지라고 한다면 100개의 서블릿이 존재해야 하는 비 효율적인 구조가 있을 수 있기 때문에 이를 보완하기 위해서 등장한 것이 MVC패턴이다. MVC패턴은 사용자의 요청 수와는 무관하게 하나의 컨트롤러(Front Controller)만 만들고, 이 컨트롤러가 요청사항을 제어한다. 여기서 말하는 컨트롤러가 Model2패턴에서의 서블릿이라고 생각하면 비교가 수월할 것이다. [ FrontController ] 사용자 요청 접수 사용자 요..

📑 위상정렬_2252_줄세우기

이제 슬슬 그래프에 대한 모든 개념을 정복하기 위해서 위상정렬 문제를 풀이하면서 간단하게 개념을 소개할까 한다. 그래프의 종류에 대해서는 아래 필자의 블로그를 학습하고 오기를 바란다. https://cm-me0410.tistory.com/78 그래프(Graph)의 종류 용어 설명 그래프(Graph) 노드와 간선을 하나로 모아 놓은 자료 구조 정점(Vertex) 노드라고도 하며, 정점에는 데이터가 저장된다. 간선(Edge) 링크라고도 하며, 노드간의 관계를 나타낸다. 인접 정점 cm-me0410.tistory.com 위상정렬(Topology Sort)은 사이클이 없는 방향 그래프에서 노드간의 순서를 찾는 알고리즘이다. 노드의 수를 V, 에지의 수를 E라고 했을 때, 시간 복잡도는 O(V+E)이다. 위상정렬..

📑 2021_KAKAO_BLIND_RECUITMENT_메뉴리뉴얼_HASHMAP

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 오늘은 오랜만에 카카오 코딩테스트 문제를 풀어보았다. 항상 Eclipse와 같은 IDE로 코드를 쳐보다가 프로그래머스로 제출할 때는 항상 낯선 기분이 든다. 정말 세세하게 어떤것은 괄호를 붙이는지, 함수의 대소문자는 어떤지에 대해 많은 회고의 시간을 갖게 한다. 나중에 간단한 손코딩 문제도 많이 푼다고 하던데,, 종종 연습을 시작해야 겠다는 생각이 들었다. 이런저..

📑 Spring 학습_Day3_IoC_DI

기존 자바 코드에서 사용하던 객체 생성방법(main2)과 스프링에서 사용하는 객체 생성 방법(main)을 비교해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package t_tok01; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main2(String[] args) { //기존 자바 코드 HelloWorld hello = new HelloWorld(); hello.setMsg("Hello W..

📑 백준[자바]_분할정복_1780_종이의 개수

오늘은 저번시간에 이어서 분할정복 문제를 풀었다. 분할을 2개로 하는 것이 아닌 3개로 하는 것이기 때문에 조금 까다로울 수 있지만, 이전에 분할정복을 사용한 별찍기 문제를 한 번 풀어보았더니 이 문제는 비교적 쉽게 접근하여 풀 수 있었다. 이 문제를 풀이해보셨다면 아래의 문제도 풀어보시면 좋을 것 같다. basecase만 바꿔주면 된다. https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net [ 문제 풀이 ] 종이에 적힌 ..

📑 Spring 학습 Day2_개발환경 구축

Java 설치 JDK 1.8설치 cmd창을 열고 java - version을 입력해보면 설치한 자바의 버전 정보를 확인할 수 있다. STS 설치(https://spring.io/tools) Eclipse + Spring Plugin IDE툴이란 통합 개발환경으로 코딩, 디버그, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경 스프링을 개발하기 위해서는 개발에 필요한 Spring plugin 설치 Eclipse이외의 tool에서도 가능하다. 본인의 OS에 맞는 IDE 버전을 설치 버전이 tools4로 업그레이드 되면서 .jar파일로 바뀌었는데 당황하지 말고 압축을 풀어준다. 그러면 contents.zip파일이 존재하는데 이 파일까지 압축을 풀어주면 실행파일이 나타난다. T..

📑 Spring 학습 Day1_개요 및 특징

[ Spring의 개요 및 특징 ] 스프링 프레임워크 (Spring FrameWork) 프레임 워크는 개발자가 맨 손으로 개발을 시작하지 않도록 기본적인 골조를 제공해주는 것이다. 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 줄여서 스프링이라고 불린다. 애플리케이션 프레임워크 특정 계층이나, 기술, 업무 분야에 국한되지 않고 전 영역을 포괄하는 범용적인 프레임워크를 뜻한다. 경량급 프레임 워크 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있다. 이전 세대에서 사용하던 EJB를 주 프레임 워크로 사용할 때 불편했던 점들을 해소했다. 엔터프라이즈 개발에 용이 개발자가 복잡하고 실수하기 쉬운 low level에 대한 관심을 줄이고, 비즈니스 로직(실제 컨트롤러의 역할) 개..

📑 RSA 암호화 방식을 이용한 로그인 처리

프로젝트를 진행하는 와중에 이번에는 필자가 로그인을 담당하게 되었다. 평소에 다른 학원 사람들과 꾸준히 세미 프로젝트를 해왔어서 그런지 단순한 로그인 기능 구현은 어려움이 없었다. 후에 소셜 로그인은 팀원들과 함께 공부하여 함께 구현해보기로 했는데, 회의날까지 약간의 시간이 남아서 로그인 처리에 대한 보안을 조금 강화하고자 한다. 이를 위해 SSL을 구현해볼까 고민해보았지만,, 최대한 돈이 들지 않는 범주에서 하기 위해서 RSA를 구현해보기로 했다. 그렇다면 RSA에 대해서 한 번 정리하고 코드에 대한 리뷰를 보도록 하자. [ RSA ] RSA란 암호화와 인증을 할 수 있는 공개키 암호 시스템이다. 이것저것 자격증을 공부하면서 많이 들어보았는데, 이렇게 직접 구현해보니 느낌이 색달랐던 것 같다. 이것은 ..

📑 완전 탐색(Brute Force)

모든 문제를 푸는 데에 있어서 가장 쉽고 간단한 방법을 짚고 넘어가겠다. 원래는 다른 탐색 알고리즘을 정리하기 전에 먼저 한 번 짚고 넘어가야 했지만,,, 은연중에 쉽다는 생각에 미뤄두었었다. 하지만 최근에 완전탐색 문제를 풀다가 제대로 깨진적이 있어서 정리하고 넘어가려고 한다. 단순하게 생각하면, 가능한 경우의 수를 일일이 모두 다 탐색해보는 것이다. 정확도는 100%에 달하는 유용한 방법이지만 세상에 좋은 기능만 있는것이 어디 있겠는가... 정확도가 증가하는 것에 비례하게 시간이 증가한다. 그렇기 때문에 정확도를 높게 유지한 상태로 코드를 문제에 맞게 조건을 걸어서 최적화를 해주어야 한다. 한 가지 간단한 예시를 들어보겠다. 사실 브루트 포스가 어려운 이유는 바로 후자, 조건에 맞게 코드를 최적화하면..

📑 MyBatis_SubQuery_국비Day75

초기 프로젝트에 mybatis설정하는 순서 [복사해오는 경우 안 쓰는 내용을 수정하지 말고 모두 삭제해서 새로 만들자.] mybatis라이브러리 셋팅하기 (WEB-INF) context.xml파일 가져오기 (META-INF) sqlMapConfig.xml과 mapper파일 ~~.xml을 생성한다. (복사하는 경우 mapper파일의 명령은 모두 지우자.(에러가 발생할 가능성이 있음.)) MyBatisConnector 생성하기 -> SqlSessionFactory를 만들어 주는 객체 [ mybatis를 사용한 서브쿼리 구현하기 ] 1. dept_list가 호출되면, dept테이블에서 읽어온 deptno, dname, loc데이터를 dept_map으로 포장해서 반환한다. 2. 1에서 반환한 dept_map을 ..

📑 백준[자바]_11279_1927_우선순위큐

오늘은 우선순위큐에 대한 기본적인 문제를 풀어보았다. 혹시라도 우선순위큐를 처음 들어본 사람은 아래의 링크로 들어가서 정리된 내용을 한 번 공부하고 오길 바란다. https://cm-me0410.tistory.com/79 우선순위큐(Priority Queue) 오늘은 다익스트라 문제를 본격적으로 풀어보기 전에 먼저 그래프 문제에서 자주 사용하는 우선순위 큐라는 자료구조에 대해 정리를 해보겠다. 결국에 큐이기 때문에 add, poll, peek 등의 연산을 cm-me0410.tistory.com 오늘도 마찬가지로 한 문제을 풀이하려 했지만, 카테고리에 분류된 처음 두 문제가 너무 비슷하고 기본적인 문제이기 때문에 두 문제를 모두 풀이하도록 하겠다. 문제에 대한 링크를 아래에 걸어두도록 하겠다. 우선순위큐 ..

📑 백준[자바]_14502_BFS_DFS_연구소

오늘은 BFS문제를 풀이해보았다. 요즘 시간에 뒤쫓기며 계속 더 어려운 알고리즘, 아직 모르는 개념을 공부하는데만 몰두했었다. 오랜만에 탐색문제를 풀었는데, 생각보다 잘 풀리지 않았다. 그래서 위로만 올라가려고 하지 않고, 기본부터 단단히 잡으면서 가려고 한다. [ 문제 접근 ] 바이러스가 퍼지기 전에 3개의 벽을 세워서 바이러스가 퍼지지 않도록 반드시 막아야 한다. 바이러스를 차단한 경우 남아있는 안전지대의 영역 수를 최대로 만들어야 한다. 벽을 세우는 경우의 수는 어떻게 할 수 있을까? 바이러스가 퍼지는 과정은 어떻게 포함할까? 문제를 풀기전에 혼자 생각을 해보았을 때, 벽을 세우는 경우의 수를 구하면 이 중에서 바이러스를 막을 수 없는, 즉 안전지대가 0인 경우의 수가 존재할 수도 있을 것이다. 그..