전체 글 103

[ComputerScience] 알고리즘의 시간복잡도와 탐색, 정렬 (Binary Search, 깊이우선탐색, 넓이우선탐색, Selection Sort, QuickSort, Merge Sort)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Time Complexity 알고리즘의 성능을 측정할 때는 흔히time complexity(시간 복잡도)와 space complexity(공간 복잡도)로측정을 많이 한다 이 중에서 이번에 알아볼 것은 시간복잡도보통 흔히 우리들이 아는 알고리즘의 성능을 평가할 때 자주 사용된다 단순하게 어떤 알고리즘의 시간 복잡도를 측정하려면어떤 방법이 있을까? 첫 번째는 실제로 알고리즘을 돌려서시작 시점과 종료된 시점의 시각을 구해그 차이를 구하는 방법이다 이러한 방법의 차이는 real-world performance를 측정할 수 있다즉, 실제로 알고리즘이 사용될 때 어느정도의 시간이 걸리는지를측정할..

[ComputerScience] 자료구조 Tree와 Graph (Rooted Binary Tree, Binary Search Tree, Graph)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Tree란? 자료구조 중에서 Tree(트리)라는 친구가 있다단순하게 말하면 트리는 서로 연결되어있는노드들의 집합인데노드와 노드 사이에는 반드시 한 개의 길만 존재해야한다 따라서 위 그림에서 Tree로 분류할 수 있는 것은1번, 3번, 4번이라고 할 수 있다 이런 형태의 자료구조를 트리라고 부른 이유는자료구조의 형태가 나무를 거꾸로 한 형태를 닮았기 때문인데가장 출발점이 되는 노드를 root(뿌리)로 부르고길을 통해 퍼져나가는 노드들의 모양이 leaf(잎)의형태를 닮았기 때문이다  Rooted Binary Tree Rooted Binary Tree는Binary라는 뜻에서 유추할 수 있듯..

[computerScience] Array, Linked List, Queue, Stack, Hash Table

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Array와 Linked List 비교 array와 linked list의 구조array는 우리가 흔히 알고있는[1, 2, 3, 4, 5]같은 자료구조이다.  위에서 보이듯이 array는 연속된 공간을 할당받고그래서 실제로 1과 2가 저장된 공간도물리적으로 연속되어 있다.  linked list는 영어 그대로데이터들이 서로 연결되어있는 list라고생각하면 편하다 Linked list에 1, 2, 3, 4, 5가 있다고 하면각 1, 2, 3, 4, 5가 메모리 어디에 저장되어있는지는 모르지만1과 2가 연결되어있고1이라는 데이터와 함께 2가 저장된 메모리의 주소를함께 저장하기 때문에1에 ..

[python/AzureAI] 발음평가(Pronunciation Assessment) API 사용해보기(cognitive-services-speech-sdk)

외주 개발 프로젝트에서front에서 user의 영어 녹음 파일을 받아와서pronunciation assessment API에 보내발음평가 결과를 받아와야했다 이 작업을 하면서 삽질을 너무 많이해서30분이면 끝날 작업을3일에 걸쳐서 완성하게 됐는데 ... 삽질의 과정은 딴것보다는 wav파일을 보내는 부분 때문이었는데 ,,, 삽질 기록과 해결법은 다른 게시물에이미 기록해뒀으니 참고해두면 좋을 것 같다 아무튼 그것만 빼면 그렇게 어려운 작업은 아니었던이번 작업을 기록에 남겨두려고한다 왜냐면 얘네 Microsoft라 공식문서가 잘돼있을 줄 알았는데그렇지 않았기때문에 ㅎ,,,일단 이 발음평가 API를 사용하려면미리 세팅해야하는게 2가지가 있다 1. speech_key와 service_region2. cogniti..

기술/기타 2024.09.09

[ComputerScience] C언어와 포인터

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.pointer는 C언어의 꽃이라고도 불린다어렵고 복잡하지만 그만큼 중요하고 반드시 필요한 부분이기때문에C언어 혹은 컴퓨터과학을 공부한다면반드시 완벽하게 이해하고 넘어가야한다 그래서 강의에서 들은 Pointer에 대해서정리해보도록 하겠당 Pointer란?포인터란 어떤 변수의 메모리 주소를 담고있는 변수이다말그대로 int, string같은 변수인데그 데이터 타입이 메모리 주소인 것이다  *;앞의 type이 메모리 주소에 담겨있는 변수의 데이터 타입은 포인터 변수의 이름이다 int *ptr;이렇게 정의를 한다면ptr은 어떤 int 값의 메모리 주소를 담고있는포인터 변수라는 뜻이다 char ..

[ComputerScience] 프로그래밍 언어 개요(python의 Module과 Class, 객체지향(OOP)의 4가지 원칙)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 목적으로 재구성한 것입니다python의 Module module이란 쉽게 말하면 python 파일을 뜻한다 import math라고 가장 위에 선언해주면math라는 python 파일 안에 있는 각종definition이나 statement를 사용할 수 있다접근을 위해서는math.sqrt()이런 방식으로 한다 from math import sqrt와 같은 방식으로math 모듈 안에 있는 sqrt 함수만 가져올 수도 있지만이름 충돌 확률이 있어 권장되지 않는 방식이라고 한다  python의 class class는 주로 구글링해보면설계도(blueprint)라는 개념에 자주 비유가 된다 클래스는 변수들과 함수들이 ..

[ComputerScience] Memory Model, Stack VS Heap, Memory Operation

이 게시글은서울대학교 데이터사이언스 대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 목적으로 재구성하였습니다Memory Model메모리 모델이란프로그래밍 언어에서메모리를 관리하는 방식이다 아마 언어마다 각각의 메모리 모델이다르겠지만, 이번 수업에서는크게 python과 C언어에 대해서만비교를 했다  python의 Memory Modelpython의 메모리 모델은high-levelcomceptual diagram이다 파이썬은  위 다이어그램처럼 메모리를 관리하는데,frame 한 개는한 개의 scope이라고 보면 된다 python은 변수들의 정확한 memory location은숨겨져있으며, reference 형식으로 메모리를 참조한다  C언어의 Memory Model사실 중요한 것은c언어의 ..

[ComputerScience] 프로그래밍 언어 개요(변수, 데이터타입, 범위, 연산자)

이 게시글은서울대학교 데이터사이언스 대학원조요한 교수님의데이터사이언스를 응용을 위한 컴퓨팅강의를 학습 목적으로 재구성하였습니다.Variables(변수)변수란 identifier를 symbolic한어떤 것으로 만드는 것이다 쉽게 말하면,프로그래밍을 하면서 저장한 어떤 데이터를찾기 쉽게 이름을 붙여준 것이다 이게 무슨 말이냐하면예전에 변수가 없었을 때에는개발자가 특정 데이터를 사용하려고 할 때해당 데이터가 담겨있는 메모리 위치를하나하나 기억해서 작성하곤 했는데,찾고자하는 그 데이터의 주소에symbolic한 이름을 붙여줌으로써그 이름만을 가지고 tracking을 가능하게해줬다는 의미이다 이러한 변수의 등장으로코드의 가독성이 높아졌으며개발자가 편하게 프로그래밍을할 수 있게 되었다 이러한 변수에는알맞은 데이터 타..

[ComputerScience] 인터프리터와 컴파일러

이 게시글은서울대학교 데이터사이언스 대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 목적으로 재구성하였습니다.첫 번째 강의는 교수님의 이전 강의 내용복습에 관한 내용이었다 간단하게 정리해보고자 한다 인터프리터와 컴파일러Python은 대표적인 인터프리터 언어고C는 대표적인 컴파일러 언어이다그럼 인터프리터와 컴파일러는 무엇이며이 두개는 어떤 차이가 있을까?  인터프리터와 컴파일러는공통적으로 코드를컴퓨터가 알아들을 수 있는 명령어로변환해주는 역할을 한다 옛날부터 배웠을텐데컴퓨터가 알아듣는 건0과 1 뿐이다 우리가 python이나 c언어로 코드를 작성하면python은 인터프리터c언어는 컴파일러를 통해서컴퓨터가 이 파일을 이해하고 실행할 수 있는0과 1의 명령어로 바꾸어준다 이제 코드를 이진수로..

[python] ffmpeg로 wav파일에 header 넣어주기(ffmpeg-python) (feat. microsoft speech cogni

react에서 user가 녹음한 파일을 백엔드로 받아와서 백엔드에서 발음평가 API를 날려 점수를 받아오는 기능을 구현해야했는데,, 내가 이용한 발음평가 API는 Azure AI의 pronunciation assessment였고 cognitive-services-speech-sdk를 다운받아 사용하는 방식이었다 https://ai.azure.com/explore/aiservices/speech/pronunciationassessment?tid=56b5b06f-62d4-4c16-b193-36e8379dae27Azure AI Studioai.azure.com github 코드를 보며 (microsoft라 기대했지만 생각보다 잘 안돼있음^^) https://docs.microsoft.com/azure/cogn..

기술/기타 2024.09.05