본문 바로가기

분류 전체보기130

[자바] 큐(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.
[백준 알고리즘][자바] 2231번 : 분해합 https://st-lab.tistory.com/98 [백준] 2231번 : 분해합 - JAVA [자바] www.acmicpc.net/problem/2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다 st-lab.tistory.com 분해합이란 자연수 N과 N을 이루는 각 자리수의 합을 의미합니다. 예를들어, 216의 분해합은 216 + 2 + 1 + 6 = 225입니다. 이때 어떤 자연수 M(216)의 분해합이 N(225) 인 경우, M(216)을 N(225)의 생성자라고 합니다. 이때 첫째 줄에 자연수 N이 주어졌을 때 생성자를 출력합니다. 자연수 N의 생.. 2022. 1. 9.
[자바] 가장 빠른 정렬 알고리즘 - 퀵 정렬 (Quick Sort) 퀵 정렬 Quick(빠른) + Sort(정렬) 퀵 정렬은 가장 빠른 정렬 알고리즘으로 잘 알려져 있습니다. 퀵 정렬은 데이터 그룹에서 그룹을 나누는 기준인 피벗(pivot)을 선택하고, 피벗을 기준으로 그룹을 나누는 것을 반복하여 각 그룹이 1개가 되면 정렬을 마칩니다. 아래의 그림을 통해 자세하게 살펴보겠습니다. 왼쪽 끝에 커서를 pl, 오른쪽 끝의 커서를 pr, 중간의 x 화살표를 피벗이라고 하겠습니다. 양쪽 끝의 커서는 피벗과 비교할 숫자를 가리키게 됩니다. [pl] >= x 가 성립하는 데이터를 찾을 때까지 pl을 오른쪽으로 스캔합니다. [pr] pivot) { // data[pr] 값이 pivot보다 작은 수 탐색 pr--; } if (pl pivot) { // data[pr] 값이 pivot보.. 2022. 1. 1.
[백준 알고리즘][자바] 2798번 : 블랙잭 & 브루트 포스(Brute Force) 브루트 포스 알고리즘의 개념 중의 하나로 영어의 뜻은 다음과 같습니다. Brute : 난폭한 + Force (힘) 이러한 뜻을 내포하고 있는 이유는 브루트 포스의 알고리즘은 정답으로 도출될 수 있는 모든 경우의 수를 탐색하는 알고리즘이기 때문입니다. 개념적으로 브루트 포스는 완벽한 알고리즘입니다. 왜냐하면 무조건 정답을 도출할 수 있기 때문이죠. 하지만 브루트 포스는 복잡도에 치명적인 단점을 가지고 있고 그에 따라 컴퓨터 자원도 문제가 될 수 있습니다. 브루트 포스를 이용하여 문제를 해결하기 위해서는 자료구조는 선형화시키는 것과 경우의 수를 빠트리지 않는 것이 중요하다고 할 수 있습니다. https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 .. 2021. 12. 31.
[스프링 프레임워크]게시판 만들기 #7 : 로그인 본 포스팅은 스프링 프레임워크를 이용하여 기본적인 게시판을 만드는 방법을 설명합니다. 기본적인 내용은 지난 포스팅을 참고해주시기 바랍니다. 안녕하세요. 이번 포스팅에서는 Spring Framework에서 로그인 기능 구현에 대해 알아보도록 하겠습니다. 기존에 진행했던 게시판 구현에 대해서는 제 블로그를 참조해주시기 바랍니다. https://hyunipad.tistory.com/category/Java/Spring 'Java/Spring' 카테고리의 글 목록 HyuniPad hyunipad.tistory.com 먼저 자신의 데이터 베이스에 member 테이블을 구축하고, 임의의 데이터 하나를 추가해줍니다. 그 후에 Spring이 데이터를 담을 수 있도록 MemberDTO(MemberBean) 클래스를 추가.. 2021. 12. 5.
[백준 알고리즘][자바] 11729번 : 하노이 탑 이동 순서 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 알고리즘에서 유명한 하노이 탑입니다. 근데 저는 한 번도 접해보지 못한... 부족한 점이 많습니다. 단순히 최소 횟수를 출력하는 것이 아닌, 과정까지 출력되어야 하기 때문에 일단 예제부터 살펴보도록 하겠습니다. 입력으로는 원판의 개수가 주어지고 출력으로는 첫째 줄에는 최소 횟수를 출력하고 두 번째 줄부터는 그 과정을 출력합니다.' 다음은 원판이 3개 일때 입니다. 1번 장대에서 3번 .. 2021. 12. 4.
[백준 알고리즘][자바] 2447번 : 별 찍기 - 10 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 재귀 함수를 이용한 별 찍기 문제입니다. 첫째 줄에 주어지는 숫자 N은 3의 거듭제곱입니다.(3, 9, 27, 81...) 크기가 3인 패턴은 위와 같이 가운데가 비어진 *** * * *** 패턴입니다. 만약 N이 3보다 큰 수(9, 27, 81..) 일 때는 크기 N/3의 패턴으로 둘러싼 형태입니다. 즉 문제에서 주어진 27의 패턴은 아래와 같습니다. 처음 문제를 접근.. 2021. 11. 28.
[스프링 프레임워크]게시판 만들기 #6 : 게시글 수정, 게시글 삭제 본 포스팅은 스프링 프레임워크를 이용하여 기본적인 게시판을 만드는 방법을 설명합니다. 기본적인 내용은 지난 포스팅을 참고해주시기 바랍니다. 2021.10.23 - [Java/Spring] - [스프링 프레임워크]게시판 만들기 #5 : 게시글 조회 [스프링 프레임워크]게시판 만들기 #5 : 게시글 조회 본 포스팅은 스프링 프레임워크를 이용하여 기본적인 게시판을 만드는 방법을 설명합니다. 기본적인 내용은 지난 포스팅을 참고해주시기 바랍니다. 2021.10.10 - [Java/Spring] - [스프링 프레임워크] hyunipad.tistory.com 이번 포스팅에서는 스프링 프레임워크에서 게시글의 수정과 삭제를 구현해보도록 하겠습니다. 사실 회사 내에서도 스프링을 사용하지 않고는 있어서 게시판 연습을 하면서.. 2021. 10. 23.
반응형