본문 바로가기

Algorithm84

[백준 알고리즘][자바] 2751번 : 수 정렬하기 2 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 이번 문제는 자바에 내장되어 있는 정렬 함수를 사용하여 푸는 문제이다. 자바에 내장되어 있는 정렬 함수는 Arrays.sort() 와 Collections.sort()가 있다.(자바 8기준) 2022.04.30 - [Programming/Java] - [Java] 자바 내장 정렬 함수 - Arrays.sort() [Java] 자바 내장 정렬 함수 - Arrays.sort() 데이터들을 .. 2022. 5. 3.
[백준 알고리즘][자바] 2750번 : 수 정렬하기 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 2022.01.22 - [Algorithm/Theory] - [자바] 단순 선택 정렬과 단순 삽입 정렬 [자바] 단순 선택 정렬과 단순 삽입 정렬 단순 선택 정렬 단순 선택 정렬이란 배열중 가장 작은 요소를 선택해 알맞은 위치로 옮겨서 정렬하는 단순한 알고리즘입니다. 아래의 배열에서 가장 작은 요소인 1을 선택해 첫 번째 위치인 6과 hyunipad.tistory.com import java.io.Buff.. 2022. 3. 8.
[백준 알고리즘][자바] 1436번 : 영화감독 숌 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) thro.. 2022. 3. 6.
[백준 알고리즘][자바] 1018번 : 체스판 다시 칠하기 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 브루트 포스의 문제입니다. 브루트 포스는 모든 경우의 수를 검사한다는 부분은 간단하지만, 어떤 경우의 수를 검사하는지가 어려운 거 같습니다. 문제 속에 힌트가 있었습니다. 8x8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 8x8 크기의 체스판으로 잘라낼 때, 잘라낼 8x8의 첫 시작 정사각형을 기준으로 살펴보면 규칙이 눈에 보입니다. 예제 입력을 보면서 .. 2022. 3. 5.
[자바] 셸 정렬(Shell Sort) 셸 정렬 셸 정렬은 단순 삽입 정렬을 보완하여 좀 더 빠르게 정렬하는 알고리즘입니다. 단순 삽입 정렬은 아래의 포스팅을 참고해주시길 바랍니다. 2022.01.22 - [Algorithm/Theory] - [자바] 단순 선택 정렬과 단순 삽입 정렬 [자바] 단순 선택 정렬과 단순 삽입 정렬 단순 선택 정렬 단순 선택 정렬이란 배열중 가장 작은 요소를 선택해 알맞은 위치로 옮겨서 정렬하는 단순한 알고리즘입니다. 아래의 배열에서 가장 작은 요소인 1을 선택해 첫 번째 위치인 6과 hyunipad.tistory.com 아래는 단순 삽입 정렬을 장점과 단점입니다. 정렬을 마쳤거나 정렬을 마친 상태에 가까우면 정렬 속도가 빠릅니다.(장점) 삽입할 위치가 멀리 떨어져 있으면 이동해야 하는 횟수가 많아집니다.(단점) .. 2022. 1. 27.
[자바] 단순 선택 정렬과 단순 삽입 정렬 단순 선택 정렬 단순 선택 정렬이란 배열중 가장 작은 요소를 선택해 알맞은 위치로 옮겨서 정렬하는 단순한 알고리즘입니다. 아래의 배열에서 가장 작은 요소인 1을 선택해 첫 번째 위치인 6과 교환합니다. 그다음 작은 요소인 4를 선택해 두 번째 위치는 5와 교환합니다. 아직 정렬하지 않은 요소중에서 가장 작은 값을 선택합니다. 선택한 가장 작은 값과 아직 정렬하지 않은 부분의 첫 번째 위치의 요소와 교환합니다. 단순 선택 정렬은 위와 같은 작업을 N-1회 반복하여 정렬하는 알고리즘입니다. 단순 선택 정렬을 코드로 구현해보겠습니다. package selectionsort; public class selectionSort { static void swap(int[] a, int idx1, int idx2) {.. 2022. 1. 22.
[자바] 버블 정렬(Bubble Sort) 버블정렬 버블 정렬이란 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복하는 단순한 알고리즘입니다. 예시를 들어 버블 정렬에 대해 알아보겠습니다. 먼저 끝에 있는 두 요소 9와 8부터 대소를 비교합니다. 이때 오름차순이라면 왼쪽의 값이 작아야 하고 내림차순이라면 왼쪽의 값이 더 커야 합니다. 오름차순으로 정렬을 할 것이기 때문에 9와 8을 교환하면 아래와 같은 배열이 됩니다. 그다음 1와 8을 비교합니다. 1은 8보다 작기 때문에 교환할 필요가 없습니다. 따라서 그 다음 요소를 비교하교 이렇게 첫 번째 요소까지 작업을 계속한다면 아래와 같은 순서로 정렬이 되게 됩니다. 요소의 개수가 N개인 배열에서는 N-1회를 비교하게 되고 끝에서 끝까지 교환하는 작업을 패스(pass)라고 합니다. 그리고 패스가 한번.. 2022. 1. 21.
[자바] 큐(Queue) - 선입선출(FIFO : First In First Out)의 자료구조 큐 Queue(대기줄) 큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 두기 위한 자료구조입니다. 하지만, 스택과 다른 점은 선입선출(FIFO : First In First Out)의 자료구조로 되어있습니다. Queue(대기줄)이라고 불리는 이유는 선입선출의 구조가 은행에서 차례를 기다리는 대기열이나 마트에서 계산을 기다리는 대기열과 비슷하기 때문입니다. 큐는 선형 큐 또는 원형 큐를 구현할 수 있습니다. 선형 큐는 데이터가 디큐 되었을 때 데이터를 하나씩 앞쪽으로 옮겨야 하는 구조이고 원형큐는 첫 번째 요소와 마지막 요소를 식별하기 위한 변수 프런트(front)와 리어(rear)를 사용하여 데이터를 앞쪽으로 옮기지 않고 사용하는 자료구조입니다. 이번 포스팅에선 원형 큐를 구현해보도록 하겠습니다. Que.. 2022. 1. 20.
[백준 알고리즘][자바] 7568번 : 덩치 https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 어떤 사람의 몸무게가 x kg이고, 키가 y cm 라면 이 사람의 덩치는 (x, y)로 표시됩니다. 두 사람 A와 B의 덩치가 각각 (x, y) , (p, q)라고 할 때, x > p 그리고 y > q이라면 A의 덩치가 B보다 더 크다고 말합니다. 덩치는 키와 몸무게 모두 커야하며 한쪽만 클 때는 덩치가 크다는 것으로 인정하지 않습니다. N명의 집단에서 자신보다 더 큰 덩치의 사람이 .. 2022. 1. 9.
[자바] 후입선출(LIFO, Last In First Out)의 자료구조 - 스택(Stack) 스택 Stack(겹겹이 쌓다.) 스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조로 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 후입 선출(LIFO, Last In First Out)로 잘 알려져 있습니다. 스택은 배열 또는 링크드 리스트로 구현할 수 있습니다. 두가지의 차이점은 배열은 스택의 용량이 정해져 있지만, 링크드 리스트는 용량이 정해져 있지 않습니다. 이번 포스팅에서는 배열로 구현을 하지만, 기회가 있다면 링크드 리스트를 이용하여 배열을 구현해보도록 하겠습니다. IntStack 생성자 package stack; public class IntStack { private int max; // 스택 용량 private int ptr; // 스택 포인터 private int[] stk; //.. 2022. 1. 9.
반응형