내일배움카드 18

백준 No.17390 - JAVA

문제 숭실골 높은 언덕 깊은 골짜기에 출제로고통 받는 욱제가 살고 있다! 욱제는 또 출제를 해야해서 단단히 화가났다. 그래서 욱제는 길이 N짜리 수열 A를 만들고, A를 비내림차순으로 정렬해서 수열 B를 만들어버렸다. 여기서 B를 출력하기만 하면 문제가 너무 쉬우니까 하나만 더 하자. 아래와 같은 질문 Q개가 주어진다. 욱제의 질문에 답하고 함께 엠티를 떠나자! 5 6 2 5 1 4 3 1 5 2 4 3 3 1 3 2 5 4 5 풀이 입력만 보고 바로 손으로 계산해보니 해당 구간에 대한 합을 구하는 것이길래 그대로 코드로 짰더니 12퍼에서 시간초과나서 틀렸다. 일단 시간초과코드 import java.io.BufferedReader; import java.io.IOException; import java...

알고리즘 2023.04.25

백준 No.2644 촌수계산- JAVA

문제 우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌 나와 아버지 형제들과 3촌이 된다. 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오 입력 사람들은 1,2,3,. 의 연속된 번호로 각각 표시 된다. 입력파일의 첫째 줄에는 전체 사람의 수 N이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진다. 그리고 셋..

알고리즘 2023.04.20

백준 No.1057 토너먼트- JAVA

문제 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 n명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 한다. 이긴 사람은 다음 라운드에 진출하고, 진 사람은 그 라운드에서 떨어진다. 만약 그 라운드의 참가자가 홀수명이라면, 마지막 번호를 가진 참가자는 다음 라운드로 자동 진출한다. 다음 라운드에선 다시 참가자의 번호를 1번부터 매긴다. 이떄 번호를 매기는 순서는 처음 번호의 순서를 유지하면서 1번부터 매긴다. 이 말은 1번과 2번이 스타를해서 1번이 진출하고, 3번과 4번이 스타를 해서 4번이 진출했다면, 4번 다음 라운드에서 번호 2번을 배정받는다. 번호를 다시 배정 받은 후에 한 명만 남을 떄까지 라운드를 계..

알고리즘 2023.04.14

백준 No.1058 친구- JAVA

문제 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또 다른 사람 B의 2-친구가 되기 위해선, 두 사람이 친구이거나, A와 친구이고,B와 친구인 C가 존재해야 된다. 여기서 가장 유명한 사람은 2-친구의 수가 가장 많은 사람이다. 가장 유명한 사람의 2- 친구의 수를 출력하는 프로그램을 작성하시오 풀이 문제를 많이 읽어봤지만 이해를 못해 결국 답을 봤다. 플로이드 와샬을 통해 각 최단 경로를 구하고 2나 1을 찾아 최댓값을 구한다. 플로이드 와샬에서는 최단경로를 구하기 위해 for(int i = 1; i

알고리즘 2023.04.12

백준 No.9012 괄호- JAVA

문제 괄호 문자열은 두 개의 괄호 기호인 ')'와 ')' 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 "()" 문자열은 기본 VPS라고 부른다. 만일 X가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 "(x)"도 VPS 된다. 그리고 두 VPS x와 y를 접합(concatenation)시킨 새로운 무낮열 xy도 VPS가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 입력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 주어진다. 입력의 첫 ..

알고리즘 2023.04.06

Spring - Filter

1. Filter 필터는 말 그대로 요청과 응답을 정제하는 역할을 한다. DispatcherServlet에 요청이 들어가기 전에 만나면서 서버에서 응답이 마지막에 만나는 곳이기도 하다. 즉, 스프링 컨테이너가 아닌 톰캣과 같은 컨테이너에서 관리가 되는 것이고, 스프링 범위 밖에서 처리되는 것이다. 여기서 의문이 들어서 글들을 찾아봤다. 스프링 범위 밖이라는 것은 스프링에서 관리를 하지 못한다는 것이고 빈으로도 당연히 등록하지 못할텐데 어떻게 빈으로 등록할 수 있는거지? 답은 https://mangkyu.tistory.com/221 [Spring] 필터(Filter)가 스프링 빈 등록과 주입이 가능한 이유(DelegatingFilterProxy의 등장) - (2) 몇몇 포스팅과 조금 오래된 책들을 보면 필..

Spring 2023.03.30

프로그래머스 Lv.1 모의고사 - JAVA

문제 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맺힌 사람이 누구인지 배열에 담아 return 하도록 solution함수를 작성 풀이 - 여기서 1,2,3 번에 패턴이 정해져 있고 해당 패턴을 보면 12345(5)ㅡ21232425(8)-3311224455(10) 자리이다. 처음에 레벨 1이길래 간단하게 생각해서 풀었는데 21점으로 계속 틀렸다. 이유가 있었는데 바로 정답에 길이가 길 수도 있는 경우였다. 그러니까 주어지는 배열 answers가 12가 나오는데 for문이 12까지..

알고리즘 2023.03.24

프로그래머스 Lv.2 덧칠하기 - JAVA

문제 어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리-학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. 넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다. 벽에 페인트를 칠하는 롤러의 길이는 m미터이고, 룰러로 벽에 페인트를 한 번 칠하는 규칙은 다음과 같습니다. - 롤러가 벽에서 벗어..

알고리즘 2023.03.17

백준 No.5972 택배 배송 - JAVA

문제 농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 여물을 줘야 합니다. 물론 현서는 구두쇠라서 최소한의 소들을 만나면서 지나가고 싶습니다. 농부 현서에게는 지도가 있습니다. N개의 헛간과, 소들의 길인 M개의 양방향 길이 그려져 있고, 각각의 길은 C마리의 소들이 있습니다. 소들의 깉은 두 개의 떨어진 헛간인 A와 B를 잇습니다. 두 개의 헛간은 하나 이상의 길로 연결되어 있을 수도 있습니다. 농부 현서는 헛간 1에 있고 농부 찬홍이는 헛간 N에 있습니다. [2]--- / | \ /1 | \ 6 / | \ [1] 0| --[3] \ | / \2 4\ | /4 [6] \ | / /1 [4]-----[5] 3..

알고리즘 2023.03.02

백준 No.10282 해킹 - JAVA

문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 싲가한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면 b가 감연되면 그로부터 일정시간 뒤 a도 감염되고 만다. 이때 b가 a를 의존하지 않는다면 a가 감염되더라도 b는 안전하다. 최흉최악의 해커 yum3이 해킹한 컴퓨터 번호와 각 의존성이 주어질 때, 해킹당한 컴퓨터까지 포함하여 총 몇 대의 컴퓨터가 감염되며 그에 걸리는 시간이 얼마인지 구하는 프로그램을 작성하시오 2 3 2 2 2 1 5 3 2 5 3 3 1 2 1 2 3 1 8 3 2 4 주의할 점 - 계속 풀어봐도 해킹 당한 노드는 3개가 나왔는데 문제에 함정이 있었다.... 이때 b가 a를 의존하지 않는다면, a가 감염..

알고리즘 2023.02.24