전체 글

· Springboot
에러 상황 Web server failed to start. Port 8080 was already in use. 스프링 프로젝트를 실행하려 할 때, 해당 에러 메시지가 발생하며 실행되지 않는 문제가 있었습니다.메시지 문구와 같이 이미 8080 포트가 실행 중이기 때문에 발생하는 에러입니다.  해결 방법 lsof -i tcp:8080   터미널에 해당 명령어를 입력하여 8080 포트로 실행 중인 프로세스 정보를 확인합니다.  sudo kill -9 PID [PID]   정보에서 확인한 PID를 [PID]에 대입시켜 명령어를 실행하면,8080 포트로 실행 중인 프로세스가 종료됩니다. 다시 프로젝트를 실행시켜보면 정상 동작하는 것을 확인할 수 있습니다.
· Springboot
스프링 강의를 듣던 중 Java 버전이 달라 변경해야 할 상황이 생겨,기존에 설치되어 있던 8버전에서 17로  변경하고자 했습니다.  1. JDK 다운로드 https://www.oracle.com/java/technologies/downloads/#jdk17-mac Download the Latest Java LTS FreeSubscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.www.oracle.com Oracle 홈페이지에 들어가서 원하는 버전의 JDK를 다운로드 받습니다.저는 MacOS 환경에서 JDK 17를 다운받고자 했기 때문에  macOS 탭의 ..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 풀이 from collections import Counterdef solution(want, number, discount): answer = 0 dict = {} for i in range(len(want)): dict[want[i]] = number[i] for i in range(len(discount) - 9): cnt = C..
문제 링크 https://www.acmicpc.net/problem/15681 15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net 문제 풀이 root에 따라 서브쿼리 노드의 개수가 달라지기 때문에 루트노드부터 순차적으로 서브쿼리를 구해나가야 합니다. 특정 노드가 루트가 될 때 그 하위에 포함된 노드들에 대한 서브 쿼리를 구해나가야 하는데 재귀를 통해 각 노드들이 루트 노드가 될 때 하위 노드의 개수를 가장 말단 노드까지 구해줍니다. 예를 들어 위 상황..
문제 링크 https://www.acmicpc.net/problem/4803 4803번: 트리 입력으로 주어진 그래프에 트리가 없다면 "No trees."를, 한 개라면 "There is one tree."를, T개(T > 1)라면 "A forest of T trees."를 테스트 케이스 번호와 함께 출력한다. www.acmicpc.net 문제 풀이 트리는 사이클이 없는 연결 요소입니다. 결국 반대로 사이클을 판별하여 트리가 아닌 것들을 찾아내면 문제를 해결할 수 있습니다. 한 노드씩 순차적으로 확인하되 이전에 방문하지 않은 노드들을 확인합니다. find_cycle(start) 함수는 사이클이 존재할 경우 flag에 True를 담아 반환하고 해당 사이클에 존재하는 모든 노드의 방문 처리 배열 값을 1로 ..
문제 링크 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 문제 풀이 간단한 이분탐색 문제 같지만 생각할 예외가 있는 문제였습니다. 처음에는 단순히 배열을 정렬한 후 초기 start를 0, end를 현재 확인하고 있는 인덱스의 앞까지로 해서 이분탐색을 진행하면 되지 않을까 했습니다. 하지만 이렇게 할 경우 아래 테케와 같이 동일한 숫자가 여러 개일 경우 문제가 발생합니다. 4 0 0 0 0 1번 0은 뒤에 있는 0들을 더해서 만들 수 있는 숫자임에도 인덱스 범위로 인해 만..
문제 링크 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 풀이 LIS 알고리즘은 보통 dp를 사용해서 수열의 길이를 갱신하는 방식으로 구현하며, 시간복잡도는 O(n^2)가 됩니다. 이 문제에서는 수열의 길이가 100만까지로 크기 때문에 기존 방식을 활용하면 시간 초과가 나게 됩니다. 시간을 단축하기 위해 이분 탐색을 활용하여 알고리즘을 구현할 수 있습니다. 이 경우에는 O(nlogn)의 시간복잡도를 띄게 됩니다. 알고리즘 방식은 다음과 ..
문제 링크 https://www.acmicpc.net/problem/7682 7682번: 틱택토 틱택토 게임은 두 명의 사람이 번갈아가며 말을 놓는 게임이다. 게임판은 3×3 격자판이며, 처음에는 비어 있다. 두 사람은 각각 X 또는 O 말을 번갈아가며 놓는데, 반드시 첫 번째 사람이 X를 놓고 www.acmicpc.net 문제 풀이 처음에는 유효하지 않은 경우를 가지치기 하는 방식으로 풀이하려 했지만, 생각보다 예외 케이스가 많았습니다. 이에 따라 유효한 케이스를 먼저 가지치기하는 방식으로 풀이했습니다. 게임판의 상태가 최종 상태일 경우 유효하다고 반환해야 합니다. 최종 상태로 가능한 경우는 이긴 플레이어를 기준으로 총 3가지로 세웠습니다. 1) X가 이긴 경우 : X의 개수가 O의 개수보다 1 많아야..
YOONJELLY
JELLYJELLY