본문 바로가기

전체 글

(73)
[백준] Q2204 도비의 난독증 테스트 JAVA https://www.acmicpc.net/problem/2204 2204번: 도비의 난독증 테스트 꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실 www.acmicpc.net 1. 문제의 유형 및 이해 구현, 정렬 대소문자를 구분하지 않고 사전순으로 가장 앞서는 단어를 정답으로 한다. apPle Bat AnT가 주어질 때 Ant apPle Bat 순으로 정렬이 된다. 각 테스트 케이스마다 주어지는 단어 개수 N 는 1000이하이다. 각 단어는 길이가 최대 20인 단어가 주어지고, 대소문자 구분을 없앴을 때 같은 단어는 주어지지 않는다. 2. 문제 접근 방법 문제에서 주..
02. Servlet 에서 Spring Web MVC로 바꿔보자 기존 프로젝트에서의 기능과 DB 등을 분석하고자 했고, Path들을 맞추어서 웹 사이트를 탐색해보는 것이 목표였다. 프로젝트에서 제공하고자 하는 기능은 다음과 같았다. - 꽃 검색 기능 ( 꽃말을 이용한 검색, 꽃 이름을 이용한 검색) - 꽃 추천하기 (static file posting 형식) - 심리 테스트 (static file) - 로그인 및 회원가입 일단 문제점이 여럿 있었는데 그 중 몇개만 꼽자면 - .jsp 파일로 접근하고, 모두 드러나있다. - Controller에 의존하기보다 각각의 jsp파일이 서로 연결되어 있는 형태가 강하다. - 파일 구조 디렉토리에 문제가 많다. 이 중 꽃 검색 기능과 로그인 및 회원가입 파트를 맡아서 진행했었기도 하고, static file 정리하면서 지치는 것보..
[백준] Q16566 카드게임 JAVA https://www.acmicpc.net/problem/16566 16566번: 카드 게임 첫째 줄에 세 개의 자연수 N, M, K가 주어진다. (1 ≤ M ≤ N ≤ 4,000,000, 1 ≤ K ≤ min(M, 10,000)) 다음 줄에 카드의 번호를 나타내는 M개의 자연수가 주어진다. 각각의 수들은 1 이상이고 N 이하이며 서로 www.acmicpc.net 1. 문제의 유형 및 이해 이분탐색, 분리 집합(Disjoint set) 문제 내용이 길어서 핵심만 간추리면 다음과 같다. 상대와 카드를 비교하여 내 카드를 어떻게 낼지 정하는 문제이다. 1~N까지 번호가 쓰인 N개의 카드 중 내가 가진 M개의 카드가 주어진다. 총 K번 비교를 하는데 상대가 낼 카드의 번호가 주어진다. 비교한 카드는 없어진다...
[백준] Q2568 전깃줄 -2 JAVA https://www.acmicpc.net/problem/2568 2568번: 전깃줄 - 2 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100,000 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결 www.acmicpc.net 1. 문제의 유형 및 이해 LIS, 이분탐색 다음과 같이 전깃줄이 연결되어 있을 때 서로 교차하지 않도록 최소한의 개수로 전깃줄을 없애려고 한다. 이 때 없애야하는 전깃줄의 최소 개수와 번호를 오름차순으로 나열하기. 한쪽을 기준으로 보았을 때 '교차하지 않는다'라는 말은 기준의 방향성과 동일하게 나열되어 있다 라고 이해할 수 있습니다. 그렇지 않다면 역으로 가서 교차하게 되기 때문입니다. a를..
[백준] Q2342 Dance Dance Revolution JAVA https://www.acmicpc.net/problem/2342 2342번: Dance Dance Revolution 입력은 지시 사항으로 이루어진다. 각각의 지시 사항은 하나의 수열로 이루어진다. 각각의 수열은 1, 2, 3, 4의 숫자들로 이루어지고, 이 숫자들은 각각의 방향을 나타낸다. 그리고 0은 수열의 마 www.acmicpc.net 1. 문제 유형 및 이해 dp 발판을 기준으로 주어지는 수열에 따라 발을 움직여 방향을 맞추어야 한다. 발을 움직일 때는 움직이는 방법에 따라 드는 힘이 다르다. 이 때, 주어지는 수열을 만족시키면서 힘을 가장 적게 사용했을 때의 힘을 찾아보자. 처음에는 그리디라고 생각을 하고 접근해서 순간의 최선을 선택하려고 했다. 하지만, 발이 움직이는 방향에 따라 드는 힘이..
01. 새로 시작하는 것이 오히려 좋을 수 있다. Spring MVC와 JPA 일부분을 수강한 후에 활용해서 프로젝트를 진행하고 싶었다. 재미있는 주제가 떠오르긴 했지만, 그 전에 처참한 이전 프로젝트를 볼 때 마다 다시 짜고 싶다는 생각이 항상 들었었는데, 이번 기회에 바꿔보려고 한다. 2년 전에 웹 프로그래밍 과목을 수강하면서 '꽃 추천 웹 사이트 제작'이라는 팀 프로젝트를 진행했었다. 해당 시즌에 다른 팀 프로젝트도 여럿 겹치면서 미루고 미루다 4일 정도 걸려서 만든 프로젝트였는데, 볼 때 마다 너무 쪽팔리다는 생각이 들었다. 나름 첫번째 웹 사이트 프로젝트였고, 처음 웹에 흥미를 느꼈던 것 같다. 당시에는 추천시스템에 꽃혀서 머신러닝 관련 교육을 수강하러 가기도 했지만, 결국 교육하면서 진행한 프로젝트에서도 웹을 맡았던 것 보면 그 때부터 웹에 ..
[백준] Q9328 열쇠 JAVA https://www.acmicpc.net/problem/9328 9328번: 열쇠 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 www.acmicpc.net 1. 문제의 유형 및 이해 그래프 탐색, 구현, 비트마스킹 상태를 고려하며 구현해야하는 문제입니다. 주어진 빌딩을 탐색하며 열쇠를 찾고 문을 열고 문서를 가지는 일련의 행위를 구현합니다. 열쇠와 문의 경우 알파벳으로 26자리에 대해서 열쇠의 존재 유무, 또는 추가하는 기능에 대해서 bitmasking을 해줄 수도 있고, boolean 배열을 따로 두어 처리해도 됩니다. 달이차오른다 가자, 와 다른 점은 무엇일..
[백준] Q2887 행성 터널 JAVA https://www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 1. 문제의 유형 및 이해 그래프 탐색, 최소 스패닝 트리, 정렬 행성을 효율적으로 지배하기 위해 각 행성을 연결하는 터널을 만들려고 할 때, 터널 N-1개를 건설하여 모든 행성이 서로 연결되도록 하는 터널의 최소 비용을 구해보자. 행성 A(a,b,c)와 행성 B(x,y,z)의 터널의 비용은 min(|a-x|,|b-y|,|c-z|)로 정해진다. 주어지는 N개의 노드..