본문 바로가기

전체 글

(118)
[JAVA] 백준 14675번 - 단절점과 단절선 풀이방법 - 이번 문제에서 핵심은 단절점과 단절선을 트리에서 구한다는 점이다. 트리는 사이클이 존재하지 않고 모든 정점이 연결되어있다고 명시되어있다. 이를 이용하면 첫번째로 어떤 간선을 제거하더라도 해당 간선이 포함된 그래프가 2개 이상으로 나오게 된다. 따라서 질의 k가 2일때는 반드시 yes를 출력하면 된다. - 두번째로 어떤 정점을 제거했을때 해당 정점이 포함된 그래프가 2개 이상으로 나오지 않는 경우는 해당 정점이 '루트노드'이거나 '단말노드'일 경우이다. 루트노드나 단말노드가 아닌 단절점인 노드는 트리의 정점 개수 N만큼 반복하여 연결정보를 입력 받을 때 2번이상씩 나오게 되어있으므로 전체 연결정보를 배열에 담은 뒤 인덱스 값이 '1'인 노드가 단절점이 아닌 노드라고 보면 된다. 따라서 질의 k..
삽입 정렬 - Insertion Sort 개념 선택 정렬과 유사하지만 좀 더 효율적인 알고리즘이다. 2번째 원소부터 시작하여 그 앞의 원소들과 비교하고 삽입할 위치를 지정한 후 원소를 뒤로 옮기고 지정된 자료를 삽입하여 정렬한다. 동작 과정 - 2번째 위치의 값을 temp에 저장 (첫번째 원소 앞에는 어떤 원소도 없기 때문) - temp와 이전 원소들을 비교하며 삽입해 나간다 - 위치 값을 저장하고 반복한다. Code void insertionSort(int[] arr) { for(int index = 1 ; index = 0) && (arr[prev] > temp) ) { arr[prev+1] ..
선택 정렬 - Selection Sort 개념 선택 정렬은 버블 정렬과 유사한 알고리즘으로 해당 순서에 원소를 넣을 위치는 이미 정해져있고 어떤 원소를 넣을지 선택하는 알고리즘이다. 동작 과정 1. 주어진 배열 중에 최소값을 찾는다. 2. 찾은 최소 값을 맨 앞에 위치한 값과 교체한다. 3. 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체한다. Code void selectionSort(int[] arr) { int indexMin, temp; for (int i = 0; i < arr.length-1; i++) { indexMin = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[indexMin]) { indexMin = j; } } // 4. swap(arr[indexM..
버블 정렬 - Bubble Sort 버블 정렬의 개념 버블 정렬은 선택 정렬과 유사한 알고리즘으로 서로 인접한 두 원소의 크기를 비교하고 조건에 맞지 않으면 서로 자리를 교환하여 정렬하는 알고리즘이다. 거품 정렬의 동작 과정 n번째와 n+1번째 원소를 비교하여 조건에 맞지 않으면 교환한다. 1회전 할 때 가장 큰 원소가 제일 마지막 순서에 정렬되고 이 수는 2회전 정렬에서 제외된다. Code void bubbleSort(int[] arr) { int temp = 0; for(int i = 0; i arr[j]) { // swap(arr[j-1], arr[j]) temp = arr[j-1]; arr[j-1] ..
[JAVA] 백준 7662번 - 이중 우선순위 큐 문제 이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데이터를 삭제하는 연산이다. 데이터를 삭제하는 연산은 또 두 가지로 구분되는데 하나는 우선순위가 가장 높은 것을 삭제하기 위한 것이고 다른 하나는 우선순위가 가장 낮은 것을 삭제하기 위한 것이다. 정수만 저장하는 이중 우선순위 큐 Q가 있다고 가정하자. Q에 저장된 각 정수의 값 자체를 우선순위라고 간주하자. ..
[JAVA] 백준 4358번 - 생태학 문제 생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다. 입력 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어진다. 출력 주어진 각 종의 이름을 사전순으로 출력하고, 그 종이 차지하는 비율을 백분율로 소수점 4째자리까지 반올림해 함께 출력한다. 예제 입력 1 복사 Red Alder Ash Aspen Basswood Ash Beech Yellow Birch Ash Cherry Cottonwood Ash Cypress Red E..
[JAVA] 백준 14889번 - 스타트와 링크 문제 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. BOJ를 운영하는 회사 답게 사람에게 번호를 1부터 N까지로 배정했고, 아래와 같은 능력치를 조사했다. 능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 팀의 능력치는 팀에 속한 모든 쌍의 능력치 Sij의 합이다. Sij는 Sji와 다를 수도 있으며, i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치는 Sij와 Sji이다. N=4이고, S가 아래와 같은 경우를 살펴보자. i\j12341..
[Spring] PageNotFound - No mapping for GET Spring 공부를 하며 만난 Error Message이다 PageNotFound - No mapping for GET.. 직역하자면 내가 Mapping하고 싶은 페이지가 존재하지 않다는 것이다 Tomcat Run/Debug Configuration의 Deployment에서 수정도해보고 Controller 파일에서 @Controller가 제대로 되어있는지, @RequestMapping 도 제대로 해주었는지 확인했지만 틀린게 없었다. 시간이 지나서 결국 원인을 찾아냈는데 내가 원하는 경로는 localhost:8080/helloSpringMVC 였는데 Project Structure의 WAR 파일 명이 잘 못되어있었다. WAR파일명을 helloSpring:war에서 helloSpringMVC:war로 바꿔주..

반응형