CS
-
/* 본 게시물은 ' ' 의 내용과 참고자료를 토대로 작성되었습니다. */ /* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */ 참고 자료 [비글리] 문자 인코딩이란? : https://vigli.tistory.com/52 [얄팍한 코딩사전] 문자 인코딩, 유니코드, UTF-8이 뭔가요? : https://www.youtube.com/watch?v=1jo6q4dihoU 1. 인코딩이란? 위키백과에 따르면 '인코딩'이란 정보의 형태나 형식을 변환하는 처리나 처리 방식으로 정의되어있다. 즉, '어떤 정보를 미리 약속한 규칙으로 가공해서 컴퓨터가 이해하게 만든다'라고 보면 된다. 인코딩은 문자, 동영상, 사진 등 다양한 분야에서 사용되고 있다. 그 중 '문자 인코딩'에 대해 ..
[CS] 인코딩/* 본 게시물은 ' ' 의 내용과 참고자료를 토대로 작성되었습니다. */ /* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */ 참고 자료 [비글리] 문자 인코딩이란? : https://vigli.tistory.com/52 [얄팍한 코딩사전] 문자 인코딩, 유니코드, UTF-8이 뭔가요? : https://www.youtube.com/watch?v=1jo6q4dihoU 1. 인코딩이란? 위키백과에 따르면 '인코딩'이란 정보의 형태나 형식을 변환하는 처리나 처리 방식으로 정의되어있다. 즉, '어떤 정보를 미리 약속한 규칙으로 가공해서 컴퓨터가 이해하게 만든다'라고 보면 된다. 인코딩은 문자, 동영상, 사진 등 다양한 분야에서 사용되고 있다. 그 중 '문자 인코딩'에 대해 ..
2021.09.24 -
/* 본 게시물은 ' BoostCourse - 자바로 배우는 자료구조 ' 의 내용과 참고자료를 토대로 작성되었습니다. */ /* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */ 참고 자료 [genius-dev] Linked List에 대하여 : https://genius-dev.tistory.com/entry/Kotlin%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Linked-List%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC1-%EA%B5%AC%ED%98%84%EA%B3%BC-%ED%95%A8%EA%BB%98 1. Linked List 구조 이번에는 코틀린으로 Linked List를 구현해보자. (LinkedList 에 대한..
[자료구조] Linked List with Kotlin/* 본 게시물은 ' BoostCourse - 자바로 배우는 자료구조 ' 의 내용과 참고자료를 토대로 작성되었습니다. */ /* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */ 참고 자료 [genius-dev] Linked List에 대하여 : https://genius-dev.tistory.com/entry/Kotlin%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Linked-List%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC1-%EA%B5%AC%ED%98%84%EA%B3%BC-%ED%95%A8%EA%BB%98 1. Linked List 구조 이번에는 코틀린으로 Linked List를 구현해보자. (LinkedList 에 대한..
2021.09.23 -
/* 본 게시물은 ' BoostCourse - 자바로 구현하고 배우는 자료구조 - 경계조건 ' 의 내용과 참고자료를 토대로 작성되었습니다. */ /* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */ 참고 자료 [URL] : https://www.boostcourse.org/cs204/lecture/625940 우리가 자료구조를 만들 때 생각해야하는 것을 '경계 조건' 이라 한다. 그러면 경계 조건에는 무엇이 있을까? 자료 구조가 비어있는 경우 자료 구조에 단 하나의 요소가 들어있을 때 자료 구조의 첫 번째 요소를 제거하거나 추가할 때 자료 구조의 마지막 요소를 제거하거나 추가할 때 자료 구조의 중간 부분을 처리할 때 예시로 우리가 첫 번째 요소를 제거(추가)한다고 가정해..
[자료구조] 경계조건/* 본 게시물은 ' BoostCourse - 자바로 구현하고 배우는 자료구조 - 경계조건 ' 의 내용과 참고자료를 토대로 작성되었습니다. */ /* 본 글은 개인적으로 공부한 내용을 정리한 글이므로 오류가 있을 수 있습니다. */ 참고 자료 [URL] : https://www.boostcourse.org/cs204/lecture/625940 우리가 자료구조를 만들 때 생각해야하는 것을 '경계 조건' 이라 한다. 그러면 경계 조건에는 무엇이 있을까? 자료 구조가 비어있는 경우 자료 구조에 단 하나의 요소가 들어있을 때 자료 구조의 첫 번째 요소를 제거하거나 추가할 때 자료 구조의 마지막 요소를 제거하거나 추가할 때 자료 구조의 중간 부분을 처리할 때 예시로 우리가 첫 번째 요소를 제거(추가)한다고 가정해..
2021.09.23 -
참고 자료 [백준 10818번] : https://www.acmicpc.net/problem/10818 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 내 풀이 (326668KB / 1500ms) 배열을 이용해 최대 최소를 풀었다. import java.util.Scanner fun main(){ val sc = Scanner(System.`in`) val si..
[백준 10818번] 배열의 최대 최소 with Kotlin참고 자료 [백준 10818번] : https://www.acmicpc.net/problem/10818 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 내 풀이 (326668KB / 1500ms) 배열을 이용해 최대 최소를 풀었다. import java.util.Scanner fun main(){ val sc = Scanner(System.`in`) val si..
2021.09.10 -
참고 자료 [BoostCourse - cs50 - linked list] : https://www.boostcourse.org/cs112 [초보몽키의 개발공부로그] Array와 리스트 : https://wayhome25.github.io/cs/2017/04/17/cs-18-1/ [Java의 LinkedList와 ArrayList 에 대한 비교] : https://www.holaxprogramming.com/2014/02/12/java-list-interface/ [에러지우개] Array vs ArrayList : https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array-vs-ArrayList #List 이번에 공부할 자료구조는 Lis..
[자료 구조] List참고 자료 [BoostCourse - cs50 - linked list] : https://www.boostcourse.org/cs112 [초보몽키의 개발공부로그] Array와 리스트 : https://wayhome25.github.io/cs/2017/04/17/cs-18-1/ [Java의 LinkedList와 ArrayList 에 대한 비교] : https://www.holaxprogramming.com/2014/02/12/java-list-interface/ [에러지우개] Array vs ArrayList : https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array-vs-ArrayList #List 이번에 공부할 자료구조는 Lis..
2021.09.10 -
/* 본 게시물은 '독하게 시작하는 C 프로그래밍 | with 최호성' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [Kotlin 자료구조 - 배열] : https://kotlinworld.com/52 [BoostCourse - cs50 - 배열] : https://www.boostcourse.org/cs112 # 배열(Array) 1. 배열이란? 배열은 자료구조에서 가장 일반적인 구조로 메모리상에 형식이 같은 자료 여러 개가 모여 새로운 하나를 이룬 형식이다. 배열은 여러 값을 저장하기 위해 메모리의 연속적인 공간을 차지하고 있다. 코틀린으로 배열을 선언해보자. // [1,2,3] 배열 생성 val arr1: Array = arrayOf(1,2,3) 위 코드는 [1,2,3] 의 배열을 만든다. 코..
[자료구조] 배열/* 본 게시물은 '독하게 시작하는 C 프로그래밍 | with 최호성' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [Kotlin 자료구조 - 배열] : https://kotlinworld.com/52 [BoostCourse - cs50 - 배열] : https://www.boostcourse.org/cs112 # 배열(Array) 1. 배열이란? 배열은 자료구조에서 가장 일반적인 구조로 메모리상에 형식이 같은 자료 여러 개가 모여 새로운 하나를 이룬 형식이다. 배열은 여러 값을 저장하기 위해 메모리의 연속적인 공간을 차지하고 있다. 코틀린으로 배열을 선언해보자. // [1,2,3] 배열 생성 val arr1: Array = arrayOf(1,2,3) 위 코드는 [1,2,3] 의 배열을 만든다. 코..
2021.09.09 -
/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [위키백과 - 자료구조] : https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0 #자료구조 1. 자료 구조란? 자료 구조의 정의는 다음과 같다. 자료구조는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. [출처] : 위키백과 - 자료구조 그렇다면 자료구조를 왜 배워야할까? 이에 대한 답은 자료 구조에 따라 알고리즘의 성능에 영향을 결정하기 때문이다. 신중히 선택한 자료구조는 보다 효율적인 ..
[자료 구조] 자료구조란?/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [위키백과 - 자료구조] : https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0 #자료구조 1. 자료 구조란? 자료 구조의 정의는 다음과 같다. 자료구조는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. [출처] : 위키백과 - 자료구조 그렇다면 자료구조를 왜 배워야할까? 이에 대한 답은 자료 구조에 따라 알고리즘의 성능에 영향을 결정하기 때문이다. 신중히 선택한 자료구조는 보다 효율적인 ..
2021.09.08 -
/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - cs50 - 재귀] : https://www.boostcourse.org/cs112 #재귀 우리는 알고리즘을 구현하기 위해 코드를 작성하다 보면 동일한 작업을 반복해야 할 때가 있다. 보통 이러한 작업은 함수로 구현하여 코드를 보다 효율적으로 만들 수 있다. 하지만 함수 내에서도 동일한 작업이 반복되는 경우는 어떻게 할까? for문이나 while 문으로 반복을 구현할 수도 있지만 이번에 배울 '재귀' 를 통해 함수 내에서 반복을 만들 수 있다. 재귀에 대해 배워보자. 1. 재귀란? 재귀의 사전적의미는 어떠한 것을 정의할 때 자기자신을 참조(호출)하는 것을 뜻한다. 즉, 알고리즘에서 재귀란 함수를 함수 내..
[Algorithm] 재귀/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - cs50 - 재귀] : https://www.boostcourse.org/cs112 #재귀 우리는 알고리즘을 구현하기 위해 코드를 작성하다 보면 동일한 작업을 반복해야 할 때가 있다. 보통 이러한 작업은 함수로 구현하여 코드를 보다 효율적으로 만들 수 있다. 하지만 함수 내에서도 동일한 작업이 반복되는 경우는 어떻게 할까? for문이나 while 문으로 반복을 구현할 수도 있지만 이번에 배울 '재귀' 를 통해 함수 내에서 반복을 만들 수 있다. 재귀에 대해 배워보자. 1. 재귀란? 재귀의 사전적의미는 어떠한 것을 정의할 때 자기자신을 참조(호출)하는 것을 뜻한다. 즉, 알고리즘에서 재귀란 함수를 함수 내..
2021.09.07 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [정렬 - 퀵 정렬] : http://dawoonjeong.com/algorithm-sort-quick/ 1. 퀵 정렬 퀵 정렬은 이름에서 부터 퀵이 들어간 빠른 정렬 알고리즘이다. 퀵 정렬은 전쟁 전략 중의 하나인 '분할 정복'에 기반한 알고리즘이다. 분할 정복 전략은 적군의 전체를 공략하는 대신, 전체를 구성하는 구성 요소들을 나누어 잘게 쪼개진 적을 공략하는 전법이다. (분할 정복에 대한 자세한 내용은 다른 게시물에서 다루겠다.) 퀵 정렬 예시 퀵 정렬은 다음과 같은 과정으로 분할 정복을 이용해 정렬을 수행한다. 데이터 집합 내에서 임의의 기준 요소를 선택하고, 기준 요소보다 작은 ..
[Algorithm] 퀵 정렬/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [정렬 - 퀵 정렬] : http://dawoonjeong.com/algorithm-sort-quick/ 1. 퀵 정렬 퀵 정렬은 이름에서 부터 퀵이 들어간 빠른 정렬 알고리즘이다. 퀵 정렬은 전쟁 전략 중의 하나인 '분할 정복'에 기반한 알고리즘이다. 분할 정복 전략은 적군의 전체를 공략하는 대신, 전체를 구성하는 구성 요소들을 나누어 잘게 쪼개진 적을 공략하는 전법이다. (분할 정복에 대한 자세한 내용은 다른 게시물에서 다루겠다.) 퀵 정렬 예시 퀵 정렬은 다음과 같은 과정으로 분할 정복을 이용해 정렬을 수행한다. 데이터 집합 내에서 임의의 기준 요소를 선택하고, 기준 요소보다 작은 ..
2021.09.04 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 1. 삽입 정렬 삽입 정렬은 데이터 집합을 순회하면서 정렬이 필요한 요소를 뽑아내어 이를 다시 적당한 곳에 삽입해 나가는 알고리즘이다. 예시로 뒤섞여 있는 트럼프 카드를 순서대로 정리하는 모습을 생각해보면 이해하기 쉽다. 카드를 한 장씩 뽑앙 카드의 값에 따라 적절한 곳에 끼워 넣는 것을 반복하다 보면 결국에는 모든 카드가 순서대로 정리되는 것 처럼, 데이터 집합에서 요소를 하나씩 뽑아 적절한 곳에 끼워 넣는 것을 반복하다 보면 정렬된 데이터 집합을 얻을 수 있다. 삽입 정렬 과정은 다음과 같다. (정렬 기준은 오름차순으로 가정한다.) 인덱스가 1인 값부터 정렬을 시작한다. 인덱스가 1인 값을 임시..
[Algorithm] 삽입 정렬/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 1. 삽입 정렬 삽입 정렬은 데이터 집합을 순회하면서 정렬이 필요한 요소를 뽑아내어 이를 다시 적당한 곳에 삽입해 나가는 알고리즘이다. 예시로 뒤섞여 있는 트럼프 카드를 순서대로 정리하는 모습을 생각해보면 이해하기 쉽다. 카드를 한 장씩 뽑앙 카드의 값에 따라 적절한 곳에 끼워 넣는 것을 반복하다 보면 결국에는 모든 카드가 순서대로 정리되는 것 처럼, 데이터 집합에서 요소를 하나씩 뽑아 적절한 곳에 끼워 넣는 것을 반복하다 보면 정렬된 데이터 집합을 얻을 수 있다. 삽입 정렬 과정은 다음과 같다. (정렬 기준은 오름차순으로 가정한다.) 인덱스가 1인 값부터 정렬을 시작한다. 인덱스가 1인 값을 임시..
2021.09.04 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - CS50 - 버블 정렬 / 선택 정렬] : https://www.boostcourse.org/cs112 이번에 공부할 내용은 데이터를 일련의 명령이나 반복되는 절차에 의해 정렬을 수행하는 정렬 알고리즘이다. 우리는 그중 버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬에 대해 알아보겠다. 각 알고리즘의 구조와 성능을 중점적으로 비교해가며 공부해보자. '왜 우리는 데이터들을 정렬해야될까?' 위 질문에 대한 답은 앞서 검색 알고리즘을 배우면서 알아보았다. 우리가 데이터를 정렬하는 이유는 정렬을 하면 데이터를 빠르게 찾을 수 있기 때문이다! 단, 데이터를 정렬하는 작업도..
[Algorithm] 버블 / 선택 정렬 알고리즘/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - CS50 - 버블 정렬 / 선택 정렬] : https://www.boostcourse.org/cs112 이번에 공부할 내용은 데이터를 일련의 명령이나 반복되는 절차에 의해 정렬을 수행하는 정렬 알고리즘이다. 우리는 그중 버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬에 대해 알아보겠다. 각 알고리즘의 구조와 성능을 중점적으로 비교해가며 공부해보자. '왜 우리는 데이터들을 정렬해야될까?' 위 질문에 대한 답은 앞서 검색 알고리즘을 배우면서 알아보았다. 우리가 데이터를 정렬하는 이유는 정렬을 하면 데이터를 빠르게 찾을 수 있기 때문이다! 단, 데이터를 정렬하는 작업도..
2021.09.03 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박상현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - 모두를 위한 컴퓨터 과학(CS50) - 검색 알고리즘] : https://www.boostcourse.org/cs112 #검색(탐색) 알고리즘 오늘 배울 알고리즘은 고성능 데이터 탐색을 구현하는데 필요한 기초가 될 것이다. 이번에 다룰 알고리즘은 순차 탐색, 이진 탐색이다. 이들을 다 배운다면 우리는 주어진 배열 속에서 특정 값을 찾을 수 있다. 자, 순차 탐색에 대해 먼저 알아보자. 1. 순차 탐색 순차 탐색(선형 검색)은 데이터 집합의 처음부터 끝까지 차례대로 모든 요소를 비교해서 데이터를 찾는 탐색 알고리즘이다. 다시 말해, 선형검색은 원하는 원소가 발견될..
[Algorithm] 검색(탐색) 알고리즘/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박상현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - 모두를 위한 컴퓨터 과학(CS50) - 검색 알고리즘] : https://www.boostcourse.org/cs112 #검색(탐색) 알고리즘 오늘 배울 알고리즘은 고성능 데이터 탐색을 구현하는데 필요한 기초가 될 것이다. 이번에 다룰 알고리즘은 순차 탐색, 이진 탐색이다. 이들을 다 배운다면 우리는 주어진 배열 속에서 특정 값을 찾을 수 있다. 자, 순차 탐색에 대해 먼저 알아보자. 1. 순차 탐색 순차 탐색(선형 검색)은 데이터 집합의 처음부터 끝까지 차례대로 모든 요소를 비교해서 데이터를 찾는 탐색 알고리즘이다. 다시 말해, 선형검색은 원하는 원소가 발견될..
2021.08.27