1. 개요 이번 자료구조는 TREE의 종류 중 하나인 LCRS_TREE이다. LCRS는 Left Child Right Sibling의 약자로 왼쪽 포인터는 자식을, 오른쪽 포인터는 형제를 가리키는 TREE이다. 학교에서는 이 LCRS트리를 배운적은 없다. 일반적인 트리에 대한 개념을 배우고 이진 트리(이진 탐색 트리)와 수식트리를 배웠다. 따라서 LCRS트리는 스스로 모든 메소드를 구현해야 했는데 오히려 배운점이 더 많았다. 다음은 LCRS트리의 이론이다. 2. 이론 LCRS트리는 앞에서 설명했듯이 왼쪽은 자식을 오른쪽은 형제를 가리키는 트리이다. 즉 data를 기리키는 필드 하나와 왼쪽, 오른쪽 포인터의 역할을 기리키는 포인터 두개로 구성되어있다. 다음은 LCRS트리이다. 내가 배운 책에서는 LCRS트..
1. 개요 드디어 AI(?)모드를 환성하였다. 말이 AI모드지 사실상 1인 플레이 모드이다. 아주 간단한 판별 알고리즘을 사용하였다. 다행이도 오목에 관련된 알고리즘이 설명되어있는 블로그를 찾았다. 이 블로그를 참고하여 OOP적으로 설계된 AI모드의 오목게임을 만들어보았다. 다음은 내가 참고한 블로그 글의 주소이다. 참고자료: https://ku-hug.tistory.com/2 오목 AI/인공지능의 간단한 원리 및 코드 대학교 1학년때 C언어 교수님이 프로그램을 만들어 제출하라해서 만든 프로그램... 조잡하다ㅠㅠ 인공지능보단 여러가지 패턴에 가중치를 설정해서 가중치가 가장 낮은 곳에 돌을 놓는 프로 ku-hug.tistory.com 기존에 만들어둔 Concave클래스를 상속받았기에 AI모드 역할을 하는 ..
1. 개요 방학 때, 들은 특강을 계기로 만들어 보았던 오목 프로그램. 학기가 지나고 같은 특강을 똑같이 신청하게 되었다. 이유는 Class에 대한 문법은 알아도 이를 활용한 OOP적인 설계는 하지 못했기 때문이다. 내가 블로그에 올린 오목게임의 베타버전을 보면 알겠지만, 하나의 클래스가 거의 main()함수의 역할을 하는 절차지향적인 설계를 볼 수 있을 것이다. 베타버전의 오목게임을 보고싶으면 아래 링크를 통해 확인할 수 있다. 오목게임 베타버전: apape1225.tistory.com/32?category=815520 C++를 활용한 오목게임 만들기(베타버전) - array 이차배열 구현(STL) 1. 개요 방학 때, 교수님께서 따로 진행하시는 특강을 듣게 되었는데 최종 과제로 제출한 프로그램을 올려..
1. 이론 알고리즘 중에 제일 대표적인 '정렬' 알고리즘이다. 알고리즘을 전부 공부한 것은 아니지만 아마 알고리즘을 공부할 때 가장 기초적으로 공부하는 알고리즘인 것 같다. (C언어를 공부할 때도 나왔으니......) 버블과 삽입은 어려운 알고리즘은 아니라고 생각했지만(이미 완성된 알고리즘을 구현하는 것 밖에 하지 않았지만......), 퀵의 구현을 공부할 때는 "대체 어떤 천재가 이런걸 만든거지?" 라는 생각이 들 정도로 감명받았다. 다음은 각각의 알고리즘의 이론이다. - 버블 버블알고리즘의 이름이 '버블'인 이유는 밑에서 부터 큰 숫자들이 마치 거품처럼 보글보글 올라오는 모습과 비슷하다고 하여 만들어진 이름이다. 최대값을 하나씩 가려내는 알고리즘이라고 생각하면 이해하기 쉬울 것이다. 다음과 같이 순서..
1. 문제 자료구조 tree공부하다가 입력된 정수를 가지고있는 data를 찾아주는 함수를 작성하고 싶었다. 그 함수는 값을 반환함과 동시에 tree를 전체적으로 탐색하는 역할을 수행해야한다. Tree를 직접 구성해보신 분들은 알겠지만, tree의 탐색은 재귀함수로 작성하는 것이 정말 간편하다. (나도 내입에서 재귀함수가 편하다고 할줄은 몰랐다......) 문제는 여기서 발생한 것이다. root → 왼쪽 트리 → 오른쪽 트리 순으로 탐색하는 전위탐색을 구현하였는데, 왼쪽 탐색을 진행하여 결과가 없을 때, return문이 중간에 끼어있으면 오른쪽 트리를 탐색하지 않고 재귀를 멈추는 오류가 발생하였다. 따라서 재귀호출 안에서 재귀호출을 두번할 때 발생하는 문제에 대해 알 수 있게 코드를 작성해보았다. 2. 해..
1. 개요 이번에 정리할 내용은 LinkedQueue에 관한 내용이다. Queue는 구현 방법에 따라 CircularQueue와 LinkedQueue 등으로 나눌 수 있는데 이 블로그에서는 LinkedQueue에 대한 설명만 진행할 것이다. 사실 Queue의 기능을 구현하는 방법은 정말 다양하지만 대표적인 두 방법으로 배열과 나머지연산을 활용하는 CircularQueue와 연결리스트로 구현하는 LinkedQueue가 있으니 CircularQueue도 꼭 공부해보기를 바란다. 2.이론 큐는 '나오는 방식이 조금 다른 스택' 이라고 생각하면 편하다. Stack과 같은 경우는 먼저 들어간 데이터가 가장 나중에 나오는 FILO 구조이지만, Queue와 같은 경우 가장 먼저 들어간것이 가장먼저 나오는 FIFO(F..
1. 개요 이번에 정리할 내용은 바로 Circular Doubled Linked List(원형 이중 연결 리스트) 이다. 드디어 객체지향 언어를 사용할 수 있게 되었다 ㅠㅠ 사실 OOP(객체 지향저) 적인 코드를 작성하는 회사에서는 이 OOP를 디자인하는 시간이 몇달이 걸린다고도 한다. 저번 글과 현재 작성하고 있는 글에 차이가 있다면 일주일동안 들은 객체지향 특강에서 배운 지식을 활용했다는 것이다. LinkedList를 C++로 작성하려고 해도 시도하지 못했지만, 이제는 C로 작성된 원형 이중 연결 리스트의 이론과 코드를 참고하여 C++로 구현하였다. 나름 뿌듯함을 느끼는 중이다. 2. 이론 사실 원형이중연결 리스트의 기능은 연결리스트와는 다르지 않다. 다만, 차이가 있다면 마지막을 찾는 연산을 하지 ..
1. 개요 방학 때, 교수님께서 따로 진행하시는 특강을 듣게 되었는데 최종 과제로 제출한 프로그램을 올려볼까 한다. C++ 14버젼 이상의 문법을 설명해주시는 특강이었는데 STL 자료구조에 대해 자세히 배울 수 있었다. 하루에 6시간씩 일주일에 걸친 수업이었는데 체력적으로 버티기는 힘들었지만 이런 세상이 있었나 싶었다 ㅎㅎ. 사실 OOP적인 프로그램을 작성해야 했지만(상속, 가상 클래스) 하룻밤 만에 만들 수 있는 프로그램을 OOP스럽게 디자인하는 것은 쉽지 않았다 ㅠㅠ 결국 CLASS문법과 STL중 하나인 'array'를 사용한 절차지향적인 프로그램이 되어버렸다 ㅠㅠ 아직은 베타 버전이지만, 보수하는 과정을 끊임없이 이 블로그에 올리고 싶다. 2. 주요코드 사실 주요코드라고 하는 것도 부끄럽다. 반복문..
- Total
- Today
- Yesterday
- 문자열
- 백준
- 개발자
- 백준 알고리즘
- 후기
- 구현
- BaekJoon
- XML
- Python
- Spring Boot
- 알고리즘
- 백준알고리즘
- 자료구조
- java
- spring
- 안드로이드 스튜디오
- 기록지
- c++
- 코딩테스트
- CJ Olivenetworks
- Programmers
- 프로그래머스
- 안드로이드 프로그래밍
- CJ
- 비트코인
- C언어
- 코딩
- CJ 올리브네트웍스
- 코테
- 육군
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |