목록전체 글 (86)
studio.heelab
교재: 『Kotlin in Action』 106~114p, 3.2 함수를 호출하기 쉽게 만들기 오늘의 주제는?Kotlin에서 함수를 읽기 쉽고 간편하게 호출하는 방법을 학습했다. 책에서는 리스트의 원소를 문자열로 만드는 함수를 조금씩 개선하면서 이름 붙인 인자, 기본 파라미터 값, 최상위 함수와 프로퍼티를 설명한다. 본론1. joinToString 함수리스트를 그대로 출력하면 다음과 같은 형태가 나온다.val numbers = listOf(1, 2, 3)println(numbers)// 출력: [1, 2, 3] 원소를 (1; 2; 3)처럼 출력하려면 원소 사이에 넣을 구분자와 앞뒤에 붙일 문자를 정해야 한다. 이를 위해 joinToString 함수를 직접 구현한다. fun joinToString( ..
탐색은 데이터 가운데 원하는 조건을 만족하는 항목을 찾는 작업이다. 학생 명단에서 학번으로 학생을 찾거나, 연락처에서 이름으로 전화번호를 찾는 일이 탐색에 해당한다. 찾을 때 비교하는 값은 탐색 키(search key)라고 한다. 이번 글에서는 순차 탐색, 이진 탐색, 보간 탐색, 이진 탐색 트리를 정리한다. 1. 순차 탐색순차 탐색(sequential search)은 데이터의 처음부터 끝까지 값을 하나씩 확인한다. 정렬되지 않은 리스트에도 바로 사용할 수 있다.데이터 [35, 97, 41, 56, 28, 61]28 탐색 35 → 97 → 41 → 56 → 28결과 인덱스 4def sequential_search(a, key): for i, value in e..
교재: 『Kotlin in Action』 89~95p, 2.4 대상을 이터레이션: while과 for 루프 오늘의 주제는?Kotlin의 while과 for 루프를 학습했다. Kotlin에서는 조건에 따라 반복할 때 while을, 범위나 컬렉션의 원소를 차례로 처리할 때 for를 사용한다. 본론1. while과 do-whileKotlin에는 while과 do-while이 있다. 문법은 Java와 같다.var count = 1while (count while은 조건을 먼저 검사하고, 조건이 참인 동안 본문을 반복한다. 위 코드에서는 count가 1, 2, 3일 때 출력하고, 4가 되면 반복을 멈춘다.var count = 4do { println(count) count++} while (count..
정렬은 데이터를 정해진 기준에 따라 순서대로 배치하는 작업이다. 숫자를 작은 값부터 나열하는 오름차순 정렬이 가장 익숙하지만, 이름순이나 날짜순으로 정렬할 수도 있다. 이때 순서를 결정하는 값을 정렬 키(sort key)라고 한다.이번 글에서는 선택 정렬, 삽입 정렬, 퀵 정렬, 기수 정렬의 작동 방식과 파이썬에서 제공하는 정렬 기능을 정리한다.1. 정렬을 보기 전에 알아둘 용어안정성(stability)은 정렬 키가 같은 데이터들의 원래 순서가 정렬 후에도 유지되는 성질이다. 예를 들어 점수가 같은 두 학생을 점수순으로 정렬했을 때, 두 학생의 앞뒤 순서가 그대로라면 안정적인 정렬이다.제자리 정렬(in-place sort)은 별도의 큰 저장 공간을 만들지 않고 주어진 리스트 안에서 요소의 위치를 바꾸는 ..
교재: 자료구조와 알고리즘 with 파이썬, 156~172p1. 알고리즘이란?알고리즘(algorithm)은 주어진 문제를 해결하기 위한 단계적인 절차이다.컴퓨터가 어떤 일을 수행해야 하는지 순서대로 나타낸 것으로, 문제를 해결하는 명령들의 집합으로 볼 수 있다.같은 문제도 여러 알고리즘으로 해결할 수 있다. 예를 들어 1부터 n까지의 합은 반복문으로 하나씩 더하거나, 합 공식을 이용해 구할 수 있다.알고리즘은 해결 절차 자체이므로 특정 프로그래밍 언어에 종속되지 않는다. 같은 알고리즘을 파이썬, C, Java 등으로 구현할 수 있다.알고리즘의 조건명령들을 나열했다고 모두 알고리즘이 되는 것은 아니다. 다음 조건을 만족해야 한다.조건의미입력0개 이상의 입력이 명확하게 정의되어야 함출력1개 이상의 결과를 생..
1. 리스트list 또는 linear list는 자료들이 차례대로 나열된 선형 자료구조이다어떤 위치에서도 새로운 요소 삽입가능하다삽입 후 모든 자료가 한 칸씩 뒤로 밀린다삭제 후에도 모든 요소의 위치가 변경된다 리스트의 주요 연산 2. 배열 구조와 연결된 구조연결된 구조( linked structure )메모리에 홀이져 있는 요소들을 링크로 연결해 하나로 관리하는 것연결된 구조에서 k번째 요소 위치 찾는게 더 오래 걸릴 수도 있다 그럼에도 사용하는 장점배열은 용량이 고정된다연결된 구조는 용량이 고정돼있지 않는다. 크기만큼 새로 할당해서 쓰는 것->메모리 효율적 사용삽입도 마찬가지,배열은 모든 요소 한 칸씩 밀어야 하지만 연결된 구조는 삽입할 위치에 바로 넣으면 됨 삭제 연산도 동일하다 3. 배열 구조의 ..
