본문 바로가기

전체 글48

[Java] 백준 1194번 달이 차오른다, 가자. 문제 952hi의 접근방법 https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 1. 접근방법 길 찾기 문제는 bfs라는 공식을 매번 기억하고 있었는데 왠지 dfs로 재귀를 타고 싶었다. dfs나 bfs 문제 둘다 중복방문 처리가 핵심이라고 생각했다. 처음 문제를 읽고 알파벳 a~z 모두 등장한다고 생각해서 알파뱃 개수인 26개 배열과 키의 개수를 가지고 재귀를 돌리면서 매번 4방탐색을 해준다면 가뿐하다고 생각했다. 그런데 시간초과를 발생했다. .. 2022. 5. 12.
Join 간단개념정리 952's 접근 JOIN 둘이상의 테이블에서 데이터가 필요한 경우 조인이 필요 일반적으로 조인 조건을 포함하는 where절을 작성해야한다 조인 조건은 일반적으로 각 테이블의 pk 및 fk로 구성된다. 조인의 처리는 어느 테이블을 먼저 읽을지를 결정하는 것이 중요(데이터 처리량이 상당히 달라짐) join의 종류 inner join 가장 일반적인 join의 종류이며 교집합이다. 동등 조인이라고도 하며 N개의 테이블 조인시 N-1개의 조인 조건이 필요함 (일반 조건 where, 조인 조건 on) 어느 테이블을 먼저 읽어도 결과가 달라지지 않아 mysql 옵티마이저가 조인의 순서를 조절해서 다양한 방법으로 최적화를 수행 할 수 있다. ex) select a.age , b.age , a.name from name a join s.. 2022. 5. 9.
DML CRUD 개념간단정리 952's 접근 dml 데이터 조작 언어 crud 정리 1. c (create) insert into 테이블 values(col1,col2...) 생략 가능한 필드 null이 허용된 필드 default가 설정된 컬럼 auto increment가 설정된 컬럼 2. r (read) select 실행 시 실행순서 from -> where -> group by -> having -> select -> order by 없다면 생략 select 컬럼명or * from 테이블 where 조건 when then when age>19 then '성인' when age>60 then '노인' else '청소년' end '연령대' and or not 사용가능 and 그리고 or 또는 not 아닌 -> not(age = '15' or age.. 2022. 5. 9.
[Java] 백준 9935번 문자열 폭발 952hi의 접근방법 https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 1. 접근방법 문자열 비교 방식처럼 투포인터를 두고 체크하면서 진행하면 쉽게 풀수 있겠다라고 생각하고 배열로 접근을 했습니다. 근데 삭제처리를 했을때 남아있는 문자열이 있을때 인덱스 관리가 쉽지가 않아서 스택으로 방향을 바꿔서 생각했습니다. 스택을 통해서 구현을 하면 무조건 pop으로만 접근가능하다고 생각하고 접근했는데 스택 함수 쓰면서 get이라는 함수가 있어서 사용해보니 원하는 .. 2022. 5. 6.
싸피 8기 준비 느낀점 및 꿀팁 방출 1.서류 1. 시험 및 코딩테스트 저는 전공자지만 코딩 잘못하는 전공자로써 공기업을 목표로 하던 사람이었습니다. 7기는 필기시험이 따로 존재했지만 8기는 코딩 테스트로 대체된다고 알고있습니다. 저는 싸피 시험공부 일주일 정도 투자해서 합격하면서 느낀부분이 시험난이도가 그리 높지 않다라는 느낌이였습니다. 누구나 노력하면 붙을 수 있는 수준이라고 이였다고 말씀드릴수 있을 것 같습니다. 비전공자 기준 GSAT 삼성 공채 문제로 준비한다면 대비 가능할 것입니다.싸피 준비 책이 있는데 저도 구매해서 풀어봤지만 GSAT 퀄리티가 훨씬 좋고 CT같은 경우 구글검색을 통해 핵심 알고리즘만 준비해도 특별하게 문제되는 부분은 없습니다. 전공자 기준 앞서말한 필기시험난이도를 고려했을때 8기 코딩 테스트 또한 쉬운 난이도로 .. 2022. 5. 5.
스프링에서 JSP 사용 시 의존성 추가 SPA나 vue 같은 프론트엔드 프레임워크에 대해 공부가 부족해서 스프링에서 Jsp를 사용하려고 보니 기본적으로 지원을 하지 않았다. 이 부분을 pom.xml에 추가해야만 가능하더라 javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper 이렇게 의존성 추가하고 src/main/webapp/WEB-INF/views 2022. 5. 2.
Spring MVC 패턴 실행 순서 간단정리 Spring MVC 실행 순서 1. DispatcherServlet이 요청을 수신 2. DispatcherServlet은 Handler Mappin에 어느 Controller를 사용할 것인지 확인 3. DispatcherServlet은 요청을 해당 Controller에 전송하고 서비스 요청의 처리결과를 리턴받음 4. ModelAndView Object에 수행결과가 포함되어 DispatcherServlet에 리턴 5. ModelAndView는 실제 JSP정보를 갖고있지 않으며 ViewResolver가 논리적 이름을 실제 JSP이름으로 변환(postfix prefis) 6. View는 결과정보를 사용에 화면 표현 2022. 5. 2.
스프링의 삼각형 IoC/DI ,AOP,PSA,POJO 간단 개념정리 1. POJO Plain Old Java Object POJO 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바객체 테스트하기 용이하며 객체지향 설계를 자유롭게 적용할 수 있다. 특정 프레임워크나 기술에 의존적이지 않은 자바 객체 특정 기술에 종속적이지 않기 때문에 생상성, 이식성 향상 Plain -> component interface를 상속받지 않는 특징 ex) 서블릿+JSP 웹에서 컨트롤러를 하나 만들다라고 가정했을때 request나 response를 사용하기 위해서는 HttpServlet과 같은 부모로 부터 상속을 받아야 사용가능해서 특정 기술에 종속적이게 됨 Old -> EJB 이전의 java class를 의미 2. PSA Portable Service Abstraction 환경.. 2022. 5. 2.
스프링의 삼각형 첫 번째 POJO - Plain Old Java Object 개념정리 Servlet과 Jsp 공부하면서 다들 Spring을 사용한다고 하길레 뭐 때문일까 생각했다. 요즘 Spring으로 웹을 만들면서 엄청 편하다라고 느끼는 중인데 스프링의 삼각형 중 하나인 POJO 부분을 간단히 정리해보려고 한다. POJO 1. POJO - Plain Old Java Object POJO 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바객체 테스트하기 용이하며 객체지향 설계를 자유롭게 적용할 수 있다. 특정 프레임워크나 기술에 의존적이지 않은 자바 객체 특정 기술에 종속적이지 않기 때문에 생상성, 이식성 향상 Plain -> component interface를 상속받지 않는 특징 ex) 서블릿+JSP 웹에서 컨트롤러를 하나 만들다라고 가정했을때 request나 respo.. 2022. 5. 1.
[Java] 백준 13168 내일로 여행 952hi의 접근방법 https://www.acmicpc.net/problem/13168 13168번: 내일로 여행 첫 번째 줄에는 한국에 있는 도시의 수 N(1 ≤ N ≤ 100)과 1인당 내일로 티켓의 가격 R(1 ≤ R ≤ 1,000,000)이 주어집니다. 두 번째 줄에는 N개의 도시의 이름이 주어집니다. 도시의 이름은 알파벳 대소 www.acmicpc.net 1. 접근방법 모든 경우의수를 돌면서 값을 구하는 알고리즘인 플로이드워샬을 사용해야겠다고 가장먼저 생각함 다익스트라로 사용해줄 수 있을것 같은데 모든 도시를 전부 한번씩 돌려주면 더 손해라고 생각해서 플로이드 워샬을 사용하기로 생각했음. 문자열 -> 해쉬맵을 통해서 지역에 맞는 인덱스를 만들어서 3중배열의 인덱스로 사용해야겠다고 생각이듬 교통수단 문자열을 받아서 .. 2022. 4. 28.
[Java] 백준 1520 내리막 길 952hi의 접근방법 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 1. 접근방법 보자마자 그저그런 최단거리 BFS 문제라고 판단하고 바로 큐에 넣어서 최단거리를 구해줬다. 예제 입출력 또한 잘나오지만 시간초과가 맞왜틀 발생한다. 단순하게 50*50*4 = 100,000 이라고 생각했지만 약 4의50약 2^100 => 엄청나게 큰수가 나와서 터지는 게 당연했다. 이 문제는 스스로 풀었다기 보다는 여러 정보를 조합해 스스로 풀어봤다. 메모이제이션과 DFS를 활용해 문제를.. 2022. 4. 21.
[Java] 백준 1414 불우이웃돕기 952hi의 접근방법 https://www.acmicpc.net/problem/1414 1414번: 불우이웃돕기 첫째 줄에 컴퓨터의 개수 N이 주어진다. 둘째 줄부터 랜선의 길이가 주어진다. i번째 줄의 j번째 문자가 0인 경우는 컴퓨터 i와 컴퓨터 j를 연결하는 랜선이 없음을 의미한다. 그 외의 경우는 랜선 www.acmicpc.net 1. 접근방법 처음 설명을 읽을때 이해가안돼서 이해안된상태로 시작하는게 아닌 충분히 이해가 될때까지 문제만 읽었다. 문제를 읽으면서 가장 최소 랜선의 길이를 구하고 각 컴퓨터가 모두 연결을 시켜야 한다는 점에서 MST 최소신장트리 알고리즘이 생각이 났다. 결론적으로는 크루스칼과 프림 둘중 하나를 선택해서 구현해야했다. 나는 크루스칼을 선택해서 사용했는데 프림은 간선이 많을때 이득이라고 생각했.. 2022. 4. 21.