꾸준히 개발하자

고정 헤더 영역

글 제목

메뉴 레이어

꾸준히 개발하자

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (115)
    • Computer Graphics (58)
      • SCOP (9)
      • HumanGL (9)
      • Graphics Pipeline (10)
      • ALEngine (21)
      • Hiking (9)
    • 자료구조와 알고리즘 (43)
      • 백준 (14)
      • 자료구조, 알고리즘 (29)
    • Java 공부 (5)
      • Java 공부 (1)
      • Java 주차별 공부 (3)
      • 더 자바, 코드를 테스트하는 다양한 방법 (1)
    • 리눅스 (8)
      • 리눅스 기초 (8)

검색 레이어

꾸준히 개발하자

검색 영역

컨텐츠 검색

전체 글

  • 42 Seoul 대비 리눅스 공부 (생활코딩 - 디렉토리와 파일)

    2023.01.24 by Banjosh

  • 정렬 알고리즘 4 (기수 정렬, Arrays.sort)

    2023.01.20 by Banjosh

  • 정렬 알고리즘 3 (병합 정렬, 힙 정렬, 도수 정렬)

    2023.01.19 by Banjosh

  • 정렬 알고리즘 2 (셸 정렬, 퀵 정렬)

    2023.01.18 by Banjosh

  • 정렬 알고리즘 1 (단순 정렬)

    2023.01.17 by Banjosh

  • 재귀 알고리즘 예제(하노이의 탑, 8퀸 문제)

    2023.01.13 by Banjosh

  • 재귀 알고리즘

    2023.01.13 by Banjosh

  • 링 버퍼

    2023.01.11 by Banjosh

42 Seoul 대비 리눅스 공부 (생활코딩 - 디렉토리와 파일)

ls ls 명령어는 현재 디렉토리의 파일 목룍을 출력하는 명령어이다. ls -l 이나 ls -al와 같이 ls 뒤에 파라미터 혹은 옵션이라 불리는 것들을 추가해서 명령어를 사용할 수 있다. 파라미터를 추가하여 사용하면 명령어에 추가적인 효과가 적용된다. 예를들어 ls -l는 파일 목록을 출력하는데 기존의 ls보다 더 자세한 파일의 내용을 출력해준다. ls -l을 입력하면 파일 목록을 얻을 수 있고 파일마다 맨 앞에 있는 값이 있는데 그것이 -면 파일이고 d면 디렉토리인 것을 알 수 있다. pwd pwd 명령어는 현재 위치하고 있는 디렉토리를 알려주는 명령어이다. mkdir mkdir 명령어는 뒤에 새로 생성할 디렉토리이름을 같이 적어주면(mkdir 이름) 적어준 이름을 갖는 디렉토리를 현재 디렉토리에 새..

리눅스/리눅스 기초 2023. 1. 24. 12:03

정렬 알고리즘 4 (기수 정렬, Arrays.sort)

기수 정렬 (Radix sort) 기수 정렬은 정렬 알고리즘 3에 나온 도수 정렬과 같이 데이터를 비교, 교환하지 않는 알고리즘이다. 기수란 데이터를 구성하는 기본 요소로 10진수에서는 0 ~ 9, 2진수에서는 0과 1, 알파벳 소문자의 경우 a ~ z가 기수가 된다. 기수 정렬에서는 기수의 개수만큼 Queue를 만들어 데이터들의 낮은 자릿수부터 높은 자릿수까지 순서대로 기준을 잡아 정렬하는 방법이 있다. (문자열은 가장 오른쪽 문자부터 왼쪽 문자의 순서로 기준을 잡음) 이것이 기수 정렬의 가장 전형적인 방법으로 필요에 따라 기준을 잡는 순서를 바꾸는 방법들도 있다. 하지만 우리는 처음 배우는 것이므로 앞에서 말한 전형적인 방법인 가장 작은 자릿수부터 높은 자릿수로 기준을 잡는 LSD(Least Sign..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 20. 10:03

정렬 알고리즘 3 (병합 정렬, 힙 정렬, 도수 정렬)

병합 정렬 (merge sort) 병합 정렬을 알기 전에 병합 정렬의 기본이 되는 정렬을 마친 두 배열의 병합 과정을 알아야 한다. 정렬된 배열 a와 b가 있고 각각의 크기는 na, nb라 하자. 그리고 이 배열들의 병합해서 배열 c에 저장하는 과정을 살펴 보자. 우선 배열 a, b, c의 index를 나타내는 포인터를 각각 pa, pb, pc라 하고 이들을 0으로 초기화한다. 그리고 a[pa]와 b[pb]를 비교해 더 작은 값을 c[pc]에 저장한다. 이때 a[pa]를 c[pc]에 저장했으면 pa++, pc++를 하고, b[pb]를 c[pc]에 저장했으면 pb++, pc++를 한다. 그리고 이 과정을 pa > na가 되거나 pb > nb가 될때까지 반복한다. 반복이 끝나면 배열 c에 들어가지 못한 값들..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 19. 06:39

정렬 알고리즘 2 (셸 정렬, 퀵 정렬)

셸 정렬 셸 정렬은 단순 삽입 정렬의 장점을 살리고 단점을 보완하여 좀 더 빠르게 정렬하는 알고리즘이다. 단순 삽입 정렬의 장점은 정렬이 되었거나 또는 그 상태에 가까우면 정렬 속도가 아주 빠르다는 것이고, 단점은 삽입할 곳이 멀리 떨어지면 이동하는 횟수가 많다는 것이다. 따라서 단점을 줄이기 위해 셸 정렬에서는 순서대로 값들을 정렬시키는게 아니라 거리가 h만큼 떨어진 값들끼리 정렬시키고 정렬이 끝나면 그다음은 h/3 만큼 떨어진 값들끼리 정렬시킨다. 이렇게 떨어진 거리를 h라 할때 정렬을 반복할 때마다 h = h/3으로 정의해 h가 1이 될때까지 반복하여 정렬을 완성한다. 이때 처음 h의 값은 1에서 시작하여 3을 곱하고 1을 더해 만들 수 있는 수중 배열의 크기보다 작은 값들 중 가장 큰 값부터 시작..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 18. 02:55

정렬 알고리즘 1 (단순 정렬)

정렬 알고리즘이란? 정렬은 핵심 항목의 대소 관계에 따라 데이터 집합을 일정한 순서로 나열하는 작업을 말합니다. 1) 정렬 알고리즘의 안정성 만약 학번순으로 나열된 성적들의 배열이 있다고 하자. 이를 성적순으로 정렬했을 때 성적이 같은 값들이 학번순으로 정렬했던 것이 유지가 되면 안정된 정렬이라 하고 반드시 학번순으로 정렬되지 않는 정렬을 안정되지 않은 정렬이라고 한다. 2) 내부 정렬과 외부 정렬 내부 정렬 : 정렬할 모든 데이터를 하나의 배열에 저장할 수 있을 때에 사용하는 알고리즘이다. 외부 정렬 : 정렬할 데이터가 너무 많아서 하나의 배열에 저장할 수 없을 때에 사용하는 알고리즘이다. 3) 정렬 알고리즘의 핵심 요소 정렬 알고리즘의 핵심 요소는 교환, 선택, 삽입으로 대부분의 정렬 알고리즘은 이 ..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 17. 04:14

재귀 알고리즘 예제(하노이의 탑, 8퀸 문제)

하노이의 탑 1. 하노이의 탑 문제 알아보기 하노이의 탑은 작은 원반이 위에, 큰 원반이 아래에 위치하도록 쌓은 원반을 3개의 기둥 사이에서 옮기는 문제이다. 모든 원반은 크기가 다르고 처음에는 모든 원반이 이 규칙에 맞게 첫 번째 기둥에 쌓여 있다. 이 상태에서 모든 원반을 세 번째 기둥으로 최소의 횟수로 옮기면 된다. 원반은 1개씩만 옮길 수 있고 큰 원반을 작은 원반 위에 쌓을 수는 없다. 2. 문제 푸는 알고리즘 짜기 우선 2개의 원반을 옮긴다고 생각해보자. 맨 위의 원반을 중간 기둥에 옮기고, 맨 아래 원반을 목표 기둥에 옮기고, 중간 기둥에 옮겨놨던 맨 위의 원반을 목표 기둥에 옮기면 완성된다(기둥 3개를 시작 기둥, 중간 기둥, 목표 기둥으로 부르자). 이번엔 3개의 원반을 옮긴다고 생각해보..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 13. 09:29

재귀 알고리즘

재귀 알고리즘 재귀란 어떤 사건이 자기 자신을 포함하고 있거나 또는 자기 자신을 사용하여 정의하고 있을 때 이를 재귀적(recursive)이라고 한다. 재귀 알고리즘의 예시 1. 팩토리얼 구하기 팩토리얼은 본인을 포함해 본인보다 작은 자연수의 값을 다 곱한 값을 말한다. 그리고 0! = 1 로 정의 된다. 예를 들어 7!이 있으면 7! = 7 * 6 * 5 * 4 * 3 * 2 * 1 이되고 이는 7 * 6!과 같다. 이를 이용해 팩토리얼 구하는 알고리즘을 짜보자. static int factorial(int n){ if( n > 0) return n * factorial(n-1); // 재귀 호출 else return 1; // n=0 이면 0!=1 return } 다음과 같이 재귀를 이용하면 간단하게..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 13. 06:19

링 버퍼

링 버퍼 앞선 게시물에서 큐를 구현할 때 링 버퍼를 사용했다. 링 버퍼는 배열의 끝과 끝을 연결해서 원형 배열을 만들었다고 생각하면 이해하기 쉽다. 그래서 보통 크기가 n인 배열을 순서대로 읽으면 index 0의 값, index 1의 값 ... index n-1의 값 이렇게 n개를 읽고 나면 끝난다. 하지만 링 버퍼에서는 index n-1 다음에 index 0이 이어진 개념이기 때문에 순서대로 읽으면 index 0의 값, index 1의 값 ... index n-1의 값, index 0의 값, index 1의 값 이런 식으로 계속 읽어낼 수 있다. 그렇다면 어떻게 링 버퍼를 구현할 수 있는가? 사실 그냥 배열을 쓰는 것은 일반적인 배열과 같다고 볼 수 있다. 하지만 요소값을 읽는 과정에서 차이가 발생한다..

자료구조와 알고리즘/자료구조, 알고리즘 2023. 1. 11. 12:02

추가 정보

인기글

최신글

페이징

이전
1 ··· 10 11 12 13 14 15
다음
TISTORY
꾸준히 개발하자 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바