본문 바로가기

IT71

[자료구조] ep3-1) 단일연결리스트(Single Linked List) ㅁ리스트 ADT: 여러 개의 노드들이 순차적으로 연결된 형태를 갖는 자료구조응용 예: 스택, 큐, 집합 / 소규모 db(주소록 등) or 더 복잡한 데이터구조 재료 ※노드(node): 커다란 자료구조의 일부분 하나 하나를 의미e.g. 리스트의 노드, 트리의 노드  리스트는 배열과 쓰임새가 비슷해 보통 많이들 비교한다    ㅇ단일연결리스트: 노드 간의 링크가 하나     활용) 다항식을 표현하는 연결리스트한 개의 다항식(polynomial)을 한 개의 헤더 단일연결리스트로 표현하는 방식(연결리스트의 각 노드는 차수의 내림차순으로 유지하고, 계수가 0인 항의 노드는 유지하지 않음) 여기서 다항식의 덧셈을 구하는 프로그램을 만들자   (전체 코드)#include #include #pragma warning (.. 2024. 5. 3.
[운영체제] ep3) 스레드(thread) [컴퓨터 구조] ep5) 스레드 파트를 복습하자스레드: 실행의 단위- 하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위- 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위 https://claremont.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-ep5-CPU-%EC%84%B1%EB%8A%A5-%ED%96%A5%EC%83%81-%EA%B8%B0%EB%B2%95 [컴퓨터 구조] ep5) CPU 성능 향상 기법세계 곳곳의 과학자들과 엔지니어들은 조금이라도 더 빠른 CPU를 만들기 위해 혈색이다 이번 장에서는 CPU 설계 기법과 명령어 처리 기법들에 대해 알아보겠다 ㅇ클럭 "컴퓨터 부품들은 클럭이라clarem.. 2024. 4. 8.
[운영체제] ep2) 프로세스(process) ㅁ프로세스(process): 실행 중인 프로그램 (실행/스케줄링의 단위 및 자료구조)보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간, 그 프로그램은 프로세스가 된다그리고 이 과정을 "프로세스를 생성한다"라 표현한다   + 프로세스를 직접 확인하는 방법- Windows: 작업 관리자 프로세스 탭 - UNIX체계: ps 명령어   포그라운드(foreground) 프로세스: 사용자가 볼 수 있는 앞 공간에서 실행되는 프로세스vs백그라운드(background) 프로세스: 사용자가 보지 못하는 뒷 공간에서 실행되는 프로세스이 백그라운드 프로세스 중에서 사용자와 상호작용하지 않고 혼자 묵묵히 일을 수행하는 프로세스들을 Windows에서는 서비스(service)라 하고 UNIX체계에서는 데몬(daem.. 2024. 4. 8.
[자료구조] ep2+) 하노이 탑 구현 하노이 탑이란? B 기둥을 이용해서 A 기둥에 놓인 크기가 다른 원판을 C 기둥으로 옮기는 문제이다. 이때 원판은 한 번에 한 개씩만 옮길 수 있으며, 작은 원판 위에 큰 원판이 놓일 수 없다.+ 이동횟수 공식은 (2^n - 1) 회이다 e.g. n = 1인 경우 1회의 이동, n = 2인 경우 3회의 이동, n = 3인 경우, 7회의 이동       문제)원반의 개수 N을 입력받아, 하노이 탑 문제의 수행과정을 출력하는 프로그램을 작성해라     의사코드)n: 이동해야 할 원반 수from: 출발 기둥aux: 보조 기둥to: 목표 기둥  모식도)  //A에 1~N 쌓여있음 A     B     C 1 2 . . N //N-1개를 A에서 C를 거쳐 B로 이동 A     B     C N     1     .. 2024. 4. 7.
[자료구조] ep2) 재귀(Recursion) ㅇ재귀(recursion): 종료조건을 만족하기 전까지 자기 자신을 계속해서 호출→ 종료조건을 잘 설정해야 한다진행 방향: 종료조건을 향하여 진행작동 원리: stack을 생각하자 (LIFO, 후입선출)   이 작동원리에 대한 마인드셋이 너무 너무 중요하다예를 들어 재귀함수는 3건의 요청이 들어온다 하면 한 함수가 3건의 요청을 처리하는 것이 아닌, 각각 3개의 함수가 1건의 요청을 처리하는 것이다 (재귀함수를 이해하기 위한 최고의 그림이자 예시이다, 세종대 컴공 교수님들 최고!)          참고 및 출처: 실전 C프로그래밍(나중채, 한동일 등), 데이터 구조 원리와 응용(국형준), C언어로 쉽게 풀어 쓴 자료구조(천인국) 2024. 4. 7.
[자료구조] ep1+) 비트행렬로 배우는 시간복잡도의 중요성 그림과 같은 비트행렬 A가 있다고 하자, 1을 카운트하는 방법에는 다양한 방법들이 존재한다여기서 나는 2가지 방법을 얘기하려 한다 1. 가장 일반적인 방법으로 이중포문을 이용해 각 행마다 0이 나올 때까지 카운트를 하는 방법: O(n^2) 2. 제일 하단 좌측에서 시작해 우측 상단을 향해 지그재그 방식으로 올라오며 카운트를 하는 방법: O(n) 1번 방식은 시간복잡도가 O(n^2)이므로 n값이 커질수록 실행 시간은 제곱수로 증폭하게 된다반면에, 2번 방식은 시간복잡도가 O(n)이므로 n값이 커질 수록 실행 시간은 그저 선형적으로 증가하게 된다따라서 우리는 실행 시간의 측면에서 2번 방식이 압도적으로 더 좋은 것을 알 수가 있다그렇기에 우리는 상황에 맞는 자료구조와 알고리즘을 설계할 수 있는 능력을 길러야.. 2024. 4. 7.
[자료구조] ep1) 자료구조 기본 지식들 ㅇ다차원 배열- 3차원 배열 - 4차원 배열   ㅇ빅오(Big O) 표기법: 연산의 횟수를 대략적(점근적)으로 표기"최악의 case 실행시간을 고려한다" [예시](1) 7n-2: O(n)(2) 3n^3 + 20n^2 + 5: O(n^3)(3) 3log(n) + log(log(n)): O(log(n))(4-1) n까지의 반복문: O(n)(4-2) n까지의 이중반복문: O(n^2)(4-3) n까지의 삼중반복문: O(n^3)(5) 조건문에서의 실행시간은 최악의 case로 합산한다+ O(log*n)은 중첩 log(n)을 의미   함수 증가율의 상한을 표시!※ 빅오메가, 빅세타 표기법과 공간복잡도는 생략   ㅇ의사코드 or 수도코드(pseudo-code): 컴퓨터가 아닌 인간에게 읽히기 위해 알고리즘을 간략하게 .. 2024. 4. 7.
foo bar baz 의미 및 유래 foo, bar, baz, fie, foe, fee, ... 프로그래밍 언어 공부를 하다 보면 foo, bar, baz 등의 변수명 등을 본 적이 있을 것이다 (특히 스택 오버플로우에서 많이 보인다) 우리나라로 치면 변수명을 갑, 을, 병, 정 느낌으로 선언하는 것이다 그렇다면 이 foo, bar, baz의 유래는 어떻게 될까? 이 foo, bar, baz의 유래는 아무도 모른다 그치만 유래에 대한 추측들로 크게 3가지가 있다 1. 2차세계대전 당시 미 육군에서 쓰이던 여러 줄임말 중, 개판이 됐다는 뜻인 FUBAR(Fucked Up Beyond All Recognition / Repair)에서 Foo와 Bar가 유래했다는 설 2. 1930 ~ 1952년 사이에 만화가 Bill Holman 이 그린 Sm.. 2024. 3. 26.
(주)포트래이 데이터 라벨링 프리랜서 후기(진행중) 포트래이(portrai)라는 AI 의료 기반 스타트업에서 데이터 라벨링 관련 프리랜서 계약을 맺게 되었다 계약기간은 총 1년이며 출근과 업무 방식은 매우 자유로웠다 포트래이는 종로구에 위치한 바이오 스타트업이며 서울대 의대 출신의 대표와 그 동문인 교수들이 공동 창업한 회사이다 사실 포트래이와의 연은 이전부터 있었다, 이전에 포트래이 로고 효과음을 외주 받은 적이 있었고 이후에 좋은 기회로 또 프리랜서 계약을 맺게 되었다 회사는 나에 대한 배려를 많이 해주었다, 학생 신분인 나였기에 학기 중에는 많은 여유가 없을 것을 참작해 주고 그것을 반영해 주었다 내 자리는 연구소 안 대표님 바로 뒷자리에 위치하였으며 윈도우 컴퓨터라 맥북을 사용하는 난 되게 오랜만인 반가운 느낌이 들었다 데이터 라벨링과 관련한 업무.. 2024. 3. 18.