본문 바로가기

한화시스템 Beyond SW Camp104

[자료구조] Trie 구현 Trie문자열을 저장하고, 빠르게 탐색하기 위한 트리 형태의 자료구조이다. 탐색 속도가 매우 빠르다 Trie 조건루트 노드는 항상 비어있다.루트 노드의 자식은 각 단어의 첫 글자이다.각 문자열의 마지막 글자는 색이 칠해진다. Trie 삽입 방법삽입할 문자열의 한 문자씩 루트의 자식부터 탐색을 하며 없으면 추가하고 있으면은 타고 들어가는 것을 반복한다.그리고 문자열의 마지막 문자가 되면 노드의 마지막 노드라는 것을 표시한다. APPLE, BEAR, BED, CAR, CARD, DADDY를 삽입해보았다.단어의 마지막 글자에는 색칠이 되어있고 BEAR와 BED의 BE까지는 동일하기 떄문에 타고 들어간 것을 볼 수 있다.CAR와 CARD도 CAR까지 동일하기에 타고 들어가서 마지막 글자만 각각 색칠되어있는 것을.. 2025. 1. 20.
[자료구조] 레드-블랙 트리 (Red-Black Tree) 코드 구현 Red-Black 트리의 삽입 조건은 아래의 링크를 통해 확인하길 바란다.https://taeh00n.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EB%A0%88%EB%93%9C-%EB%B8%94%EB%9E%99-%ED%8A%B8%EB%A6%ACRed-Black-Tree [자료구조] 레드-블랙 트리(Red-Black Tree)레드 - 블랙 트리트리의 모양이 균형 잡히도록 각 노드들은 Red 혹은 Black의 색상을 가지고 모든 경우에서 O(lonN)의 시간 복잡도를 보장받는다.레드 - 블랙 트리 조건1. 루트 노드는 무조건 검은색taeh00n.tistory.comRBNodepublic class RBNode implements TreePrinter... 2025. 1. 20.
[자료구조] AVL 트리 이론, 구현 AVL 트리AVL 트리는 이진 탐색 트리의 속성을 갖는다.왼쪽 서브 트리와 오른쪽 서브 트리의 높이 차이가 최대 1이다.높이 차이가 1보다 커지는 경우가 생기면 회전을 통해서 균형을 잡는다. 회전(Rotation)LL(Left - Left) case삽입 또는 삭제로 인해 Left - Left로 서브 트리가 불균형을 이루는 것을 LL 문제라 한다.4번 노드의 오른쪽 자식 노드를 6번 노드로 변경한다.4번 노드의 우측 자식인 것을 6번 노드의 왼쪽 자식노드로 변경한다. (4보다는 크고 6보다는 작기 때문)4번 노드를 부모 노드로 승격 시킨다.= 우회전 (Right Rotation) RR(Right - Right) case삽입 또는 삭제로 인해 Right- Right로 서브 트리가 불균형을 이루는 것을 RR .. 2025. 1. 20.
한화시스템 Beyond SW Camp 12기_9주차 회고 (2025.01.13~2025.01.17) 한화시스템 Beyond SW Camp 12기 9주차가 끝났다.이번 주는 자료구조에 대해서 배웠다. 자료구조 중에 스택, 연결리스트를 배우고 트리에 대해서 배우고 자바로 구현까지 해보았다. 자료구조는 학교 다닐 때 담당하셨던 교수님이 과제에 비중을 크게 잡고 계신 교수님이라 과제를 손으로 일일히 다 그렸어야 했었다. 그래서 그때 밤을 새가면서 자료구조에 대해서 손으로 썼던 기억이 있는데 그래서인지 이번 수업이 크게 어렵지 않았다. 강사님이 자기 머릿속에 있는 내용을 코드로 잘 옮기지 못하는 사람을 위해 한줄한줄 어떻게 해야할지 써주셨을 때는 코드를 짜기 편했고 크게 막히는 부분도 없었다. 하지만 내가 직접 구현을 해봐야지라고 했을 땐 강사님보다 변수를 더 많이 선언하게되면서 코드가 지저분해지는 것을 볼 수.. 2025. 1. 19.
[Java] SQL Injection SQL Injection이란?악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위이다. SQL Injection 예시 (로그인 Dao)public boolean login(User user) { String sql = "SELECT * FROM user WHERE " + "email = '" + user.getEmail() + "' AND password = '" + user.getPassword() + "'"; try { ResultSet rs = conn.createStatement().executeQuery(sql); if.. 2025. 1. 19.
[자료구조] 이진 탐색 트리(Binary Search Tree) 구현 이진 탐색 트리이진 탐색 트리는노드의 왼쪽 하위 트리엔 노드 값보다 작은 노드들만 있다.노드의 오른쪽 하위 트리엔 노드 값보다 큰 값들만 있다.=> 즉 데이터를 삽입할 때 거치는 노드보다 작으면 왼쪽, 크면 오른쪽으로 간다는 뜻이다.Nodepublic class Node implements TreePrinter.PrintableNode{ private int data; private Node leftNode; private Node rightNode;// 생성자. 노드 생성 시 오른쪽, 왼쪽 노드 비어있게. public Node(int data) { this.data = data; this.leftNode = null; this.rightNode.. 2025. 1. 19.