5. 누적 합 (Prefix Sums) Codility Lesson 한국어 정리본 (JavaScript ver.) 누적 합(Prefix Sums)이란?배열의 특정 구간(슬라이스)의 합을 빠르게 계산하는 강력한 기법이 누적 합(Prefix Sums) 이다. 이는 배열의 처음부터 특정 위치까지의 합을 미리 계산해 저장하는 방법이다.예를 들어, 배열 A가 다음과 같다고 하자.A = [a₀, a₁, a₂, ..., aₙ₋₁]그러면 누적 합 배열 P는 다음과 같이 정의된다.P[0] = 0P[1] = a₀P[2] = a₀ + a₁P[3] = a₀ + a₁ + a₂...P[n] = a₀ + a₁ + ... + aₙ₋₁이전 값 P[k-1]에 현재 값 A[k-1]을 더하는 방식으로 누적 합을 계산할 수 있으며, 전체 연산은 O(n) 의 시간 복잡도를 가진다.1. O(n) 시간 복잡도의 누적 합 계산JavaScript 코드:funct..
4. 원소 개수 세기 (Counting Elements) Codility Lesson 한국어 정리본 (JavaScript ver.) 원소 개수 세기란?배열을 활용하여 숫자 시퀀스를 저장하는 방법에는 여러 가지가 있다. 일반적으로 연속된 숫자 a₀, a₁, ..., aₙ₋₁를 배열의 인덱스에 맞춰 저장한다.예를 들어:let A = [4, 2, 4, 5];// A[0] = 4, A[1] = 2, A[2] = 4, A[3] = 5그러나 원소를 직접 저장하는 대신, 각 숫자의 등장 횟수를 세는 배열 을 만들 수도 있다.이 경우, 배열 count[] 는 해당 값이 등장한 횟수를 저장한다.count[2] = 1; // 숫자 2는 한 번 등장count[4] = 2; // 숫자 4는 두 번 등장count[5] = 1; // 숫자 5는 한 번 등장이 방법을 사용하면 특정 숫자가 등장한 횟수를 O(1) 시간에 확인할 수 있다.1. O(n + m) 시간..
3. 시간 복잡도 (Time Complexity) Codility Lesson 한국어 정리본 (JavaScript ver.) 시간 복잡도란?시간 복잡도(Time Complexity)를 사용하면 프로그램의 실행 시간을 대략적으로 추정할 수 있다. 정확한 실행 시간을 계산하는 것은 컴파일러, 컴퓨터의 종류, 프로세서 속도 등 여러 요인에 의해 영향을 받기 때문에 매우 복잡하다. 따라서, 우리는 실행 시간의 대략적인 크기(order of magnitude) 를 측정하는 것이 목표이다.복잡도는 프로그램이 실행할 수 있는 기본 연산(primitive operation) 의 최대 개수로 볼 수 있다. 여기서 기본 연산이란 덧셈, 곱셈, 대입 연산 등을 의미한다. 하지만 모든 연산을 다 고려하는 대신, 프로그램에서 가장 많이 실행되는 지배적인 연산(dominant operation) 에 초점을 맞춘다.프로그램의 시간 복잡도는 입력 데이터에..
2. 배열 (Arrays) Codility Lesson 한국어 정리본 (JavaScript ver.) 배열 (Arrays)배열(Array)은 여러 개의 항목을 한 곳에 저장할 수 있는 데이터 구조이다. 예를 들어, 쇼핑 목록을 생각해보자. 각각의 제품을 개별적인 페이지에 기록하지 않고, 한 페이지에 나열하는 것이 더 효율적이다. 배열은 이러한 개념과 유사하다. 마찬가지로, 1년 동안의 일일 기온을 기록하려 한다면, 365개의 변수를 만들기보다는 하나의 배열에 저장하는 것이 더 적절하다.1. 배열 생성 (Creating an Array)우리는 세 개의 제품을 포함하는 쇼핑 목록을 만들고자 한다. 이러한 배열은 다음과 같이 생성할 수 있다.JavaScript 코드:let shopping = ['bread', 'butter', 'cheese'];배열의 각 항목을 요소(element) 라고 한다. 배열은 메모리..
1. 반복 (Iterations) Codility Lesson 한국어 정리본 (JavaScript ver.) Codility 에서 제공하는 lesson의 open material 을 모두 한국어로 정리하는 동시에, 나는 JS 로 코딩테스트를 봐야하기 때문에 튜토리얼 속 파이썬 코드를 JS 코드로 바꿔 정리하게 되었다.100% 완벽한 번역본이 아닌 필자의 입맛대로 (벼락치기용 )ㅎ 정리한 내용이다.lesson 17까지 다 공부하고 문제 풀고 블로그에 포스팅까지 하는게 목표!반복문 (Iterations)프로그래밍에서 반복(iterating) 이란 프로그램의 일부를 여러 번 실행하는 것을 의미한다. 이 장에서는 반복을 수행할 수 있는 기본적인 프로그래밍 구조인 for문과 while문을 다룬다.1.1. For 루프 (For Loops)어떤 연산을 일정 횟수만큼 반복하거나, 특정 컬렉션의 각 요소에 대해 반복하려면 fo..
자료구조(Data Structure) 총정리 대표적 자료구조 및 알고리즘 정리최근에 자료구조 분류 도식, 배열(array), 연결 리스트(linked list), 스택(stack), 재귀함수와 스택 메모리, 큐(queue), 멀티스레딩과 큐에 대해 다시 공부했다. 이 외에도 해시테이블, 그래프, 트리, 힙 등 중요한 자료구조를 포함해 중요 자료구조 8개를 정리해보려한다. 0. 자료구조 분류 도식자료구조는 크게 선형(Linear) 자료구조와 비선형(Non-linear) 자료구조로 분류된다선형 자료구조:배열, 연결 리스트, 스택, 큐 등이 대표적특징: 메모리 상에 연속적 또는 순차적으로 데이터를 저장하며, 삽입/삭제 연산이 한쪽 끝 또는 중간에서 이루어짐비선형 자료구조:트리, 힙, 그래프 등이 있으며, 계층적 또는 네트워크 형태로 데이터를 저장특징: ..
당근알바 Software Developer Intern - Frontend 최종면접 후기 이번학기에 들어서 지원서를 좀 넣고 있는데, 너무 빠르게 첫 서류 통과이자 최종 면접의 기회가 왔다. 취업이 엄청 급한 시기는 아니라서, 그저 면접을 볼 수 있다는 것 자체만으로 감사했다. 다음교시 기말고사 보고 와서 이어서 쓸 예정..
[ADHD 아동을 위한 VR 프로그램 개발] 캡스톤 일지 2 - 나홀로 눈물파티한 .. 아동 실험 이야기 ✏️ 어쩌다 논문에 발을 들였을까..? 우리팀은 1학기를 나름 열심히 보냈다. 모든 것은 교수님이 어느 날 갑자기 카톡으로 논문 낼 곳을 알려주셨을 때부터 시작되었다. 이전에 '논문 한편 써야죠~' 라고 회의시간에 이야기가 나오긴 했었지만 ..ㅎㅎ 딱 이 시점부터 우리는 개발중이던 것을 마무리 지어야 했고, 실험 설계에 대한 고민을 하기 시작했던 것 같다. 애플아카데미에서나 타 앱 개발 프로젝트를 할때 유저테스트에 대해 많이 공부해보았기에, 실험 설계는 내가 하고싶다고 말씀드렸다. VR을 이용한 실험은 처음이었기 때문에 많이 알아보고, 프로토콜을 정말 잘 짜야겠다! 고 마음먹었었다. ifj 라 상상력은 부족하지만 돌발 상황은 무엇이 있을지, 할 수 있는한 많은 상황에 대해 마음의 준비를 해두었고, 예..
[ADHD 아동을 위한 VR 프로그램 개발] 캡스톤 일지 1 - 우리팀을 소개합니다 🐥 🤷🏻‍♀️ 도메인 비만 나가는 나의 블로그 , 왜 이제 돌아왔는가 아는 사람은 알겠지만,, 내 블로그의 도메인은 kimhaeun.com 이다. 온세상 김하은님들께 ,, 죄송하지만 내가 독점중 .... ^^! 작년 애플아카데미 극 초반에 SWIFT 내용을 정리하던게 마지막 글로 뜨니,... 무려 1년 반만에 이 블로그를 켠다.  내가 정말 글로 남겨두고 싶은 것이 생겼는데, 그건 바로 지금 졸업과제로 하고 있는!! 캡스톤 디자인의 과정이다.!   😎 우리팀을 소개합니다 내가 속한 팀은 총 4명으로 구성되어있다. 🧑🏻‍💻 🧑🏻‍💻 🧑🏻‍💻 👩🏻‍💻  한동대학교 이원형 교수님 랩실 (https://sirl.handong.edu/)에 소속되어 있으며,  현재 [ADHD 아동을 위한 V..