Algorithm&BAEKJOON(백준)
-
[알고리즘(Algorithm)] 6. 해시테이블(HashTable)Algorithm&BAEKJOON(백준)/0. 알고리즘(Algorithm), 자료구조(Data Structure) 2023. 9. 11. 14:34
* 해시(Hash) : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값. 이를 이용하여 특정 위치에 값을 저장하거나 찾을 수 있다. => '무언가를 잘게 쪼갠 후, 결과물을 생성하는 과정' (Hash) * 해시함수(Hash Function) : 임의의 길이를 가진 데이터를 입력받아 고정된 길이의 값(해시값)을 출력하는 함수 💡 해시 함수에 의해 반환되는 값은 해시 값(Hash Value) / 해시 코드(Hash Code) / 다이제스트(Digst) / 해시(Hash)라고 한다. # 해시 테이블(HashTable) : (Key, Value)로 데이터를 저장하는 자료구조 중 하나로, 빠르게 데이터를 검색할 수 있는 것이 특징이다. => 내부적으로 배열(버킷, Bucket)..
-
[알고리즘(Algorithm)] 0. 알고리즘(Algorithm) & 자료구조(Data Structure)Algorithm&BAEKJOON(백준) 2023. 4. 17. 15:21
시작하기에 앞서 ... 🏃♀️ [ Programmers - 자료구조와 알고리즘, 왜 중요할까? ] [ 한빛출판네트워크 - 개발자는 반드시 자료구조와 알고리즘을 배워야 할까? ] 위 글들을 한번 읽어 보시기를 추천드립니다. :) (해당 포스팅은 윗 글을 참고해 작성하였습니다.) 내가 정리하고 이해하고자 하는 내용을 담고 있기도 하지만, 그 전에 이러한 개념이 정말 '왜 필요한지'를 볼 수 있어유익했습니다. '나에게 이게 왜 필요하지?'에 대한 의문을 충족시키지 못한 채 시작하는 공부는, 갈피 잡기도 어렵고 결국 머리에 남는 것도 없었던 일들이 한 두번이 아닌 저는, 시작 전 늘 '왜'를 풀곤 합니다. 뭐가 됐든 조금의 팁이 되고 싶은 마음에 주저리 주저리 적어봤습니다 😊 제 자신을 위해 하는 공부이기도 ..
-
[알고리즘(Algorithm)] 5. 스택(Stack)과 큐(Queue)Algorithm&BAEKJOON(백준)/0. 알고리즘(Algorithm), 자료구조(Data Structure) 2023. 4. 17. 11:07
- 스택(Stack)과 큐(Queue)는 배열(Array)에서 발전된 형태의 자료구조이다. - 스택과 큐의 구조는 비슷하지만 처리 방식에 차이가 있다. ※ 스택(Stack)과 큐(Queue)의 핵심 이론 * 스택(Stack) : "쌓여있다.", "쌓아 올리다.", "굴뚝" ... 🗻 즉, 스택은 굴뚝 형태로 데이터를 차곡차곡 쌓아 올린 형태의 자료구조이다. 이러한 스택은 *후입선출(LIFO : Last In, First Out)이 이루어지는데, 이는 다음 그림을 통해 확인할 수 있다. * 후입 선출은 삭제와 삽입에 대한 방식으로, 출입(삽입)과 퇴출(삭제)가 한 쪽에서만 발생하는 것을 알 수 있다. 스택(Stack)의 연산 Push(data) data를 스택의 가장 윗 부분에 추가한다. (Last in ..
-
[백준, 10869번] 6단계) 사칙연산 - JAVA 풀이Algorithm&BAEKJOON(백준)/1단계) 입출력과 사칙연산 2023. 4. 14. 17:51
백준 [108699번] - 사칙연산 https://www.acmicpc.net/problem/10869 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net # 문제 해설 이전 단계에서 정리한 연산자(Operator)에 대한 문제로, 각 조건에 맞는 연산자를 사용해 계산을 진행하면 된다. 또한 데이터 타입 설정을 위해 출력 결과를 확인하는 습관을 기르는 것이 좋다. 이때 덧셈, 뺄셈, 곱하기, 나머지의 경우는 실수가 출력되는 경우가 없기에 이를 제외하고 '나눗셈'을 주의 깊게 확인한다. * 결론적으로 이번 문제에서는 모두 정수로 출력되는 것을 확인하면 된다. * Java 연산자..
-
[알고리즘(Algorithm)] 4. 구간 합(Prefix Sum)Algorithm&BAEKJOON(백준)/0. 알고리즘(Algorithm), 자료구조(Data Structure) 2023. 4. 14. 16:16
※ 구간 합(Prefix Sum) 구간 합은 합 배열을 이용하여 시간 복잡도(Time complexity)를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘. 즉, 이는 수들의 나열에서 특정 구간의 합을 의미한다. ex> i~k 인덱스 사이의 값들의 합 * 부분 합(Partial Sum) 더보기 처음부터 특정 인덱스까지의 합을 의미한다. ex> 0~k 인덱스 사이의 값들의 합 ※ 구간 합의 핵심 이론 (합 배열) 배열 A가 있는 경우, 합 배열 S는 다음과 같습니다. S[ i ] = A [0] + A[1] + A[2] + ... + A[ i-1 ] + A[ i ] // A[0] ~ A[ i ]까지의 합 즉, 합 배열은 기존의 배열을 전처리(Data Preprocessing)한 배열이라 생각할 수 있다. ..
-
[알고리즘(Algorithm)] 3. 배열(Array)과 리스트(List)Algorithm&BAEKJOON(백준)/0. 알고리즘(Algorithm), 자료구조(Data Structure) 2023. 4. 14. 15:08
기본 *자료구조인 배열(array)과 리스트(list)는 가장 흔히 사용되는 자료구조이다. 하지만 이 둘은 비슷하면서도 분명한 차이점을 가지고 있기에, 이에 대한 이해가 필요하다. * 자료구조(Data Structure) 더보기 컴퓨터가 데이터를 효율적으로 다룰 수 있게 도와주는 데이터 보관에 대한 방법과 연산의 총체를 말한다. 예를 들면 자주 사용하는 데이터 타입인 int도 자료구조이다. * int의 보관 방법 및 연산 보관 방법 32bit 메모리 공간 안에 수를 할당하되, 첫 비트를 부호 표현에 사용한다. 연산 덧셈(+), 뺄셈(-), 나눗셈(/, %), 곱셈(*), 논리(&&, ||, &, |, ^, !), 시프트() 등의 다양한 연산 제공 자료구조는 단순 자료구조(Primitive Data Str..
-
[알고리즘(Algorithm)] 2. 디버깅(Debugging)Algorithm&BAEKJOON(백준)/0. 알고리즘(Algorithm), 자료구조(Data Structure) 2023. 4. 14. 13:45
버그(Bug) - 벌레, 디버그(Debug) - 벌레를 잡다. ... 그렇다면 디버깅(Debugging)은? ※ 디버깅(Debugging)이란? 디버그(Debug) 또는 디버깅(Debugging)은 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정이다. * 디버거(Debugger) : 디버깅 작업을 손쉽게 할 수 있도록 돕는 소프트웨어(SoftWare) 이때, 문법 오류는 컴파일러(Compiler)가 자동으로 찾아주기에 문제가 되지 않으나, 논리 오류는 코드가 사용자의 의도와는 다르게 동작하고 또 다양한 형태로 발생하기에 해결이 필요하다. ※ 디버깅(Debugging) 하는 법 코드에서 디버깅하고자 하는 줄에 중단점(Break Point)을 설정하고, IDE(Intergrated Deve..
-
[백준, 1008번] 5단계) A/B - JAVA 풀이Algorithm&BAEKJOON(백준)/1단계) 입출력과 사칙연산 2023. 4. 13. 18:15
백준 [1008번] - A/B https://www.acmicpc.net/problem/1008 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net # 문제 해설 A와 B를 입력받아 A/B를 하여 결과를 내는 것이 목표. 이전 3단계 문제에서 '연산 기호'를 변경해야 한다. ( / ) (기본적으로 1단계에서는 연산 기호(연산자, Operator)에 대한 이해만 있다면 쉽게 해결할 수 있다.) * Java 연산자(Operator)? 더보기 - Operator : 프로그램 내에서 데이터를 처리해 결과를 도출하는 것을 연산(Operation)이라 하고, 이러한 연산에 사용되는 기호를 연산자(Operator)라고 한다. (연산되는 데이터는..