# 함수 실행 시간(running time) 계산하는 방법 우선 실행 시간 계산을 위해 단순화해야하는 것이 있다. 실행 시간의 개념을 흔히 우리가 라는 시간적인 개념이 아닌, 함수나 알고리즘 수행에 필요한 스텝(step) 수라고 정의해야 한다. 이때 스텝 수는 각 코드 라인마다 고정적으로 정해져 있다(constant)고 해야한다. # 시간 복잡도란? 시간 복잡도는 n개의 입력 데이터에 대해 알고리즘이 문제를 해결하는데에 얼만큼의 시간이 걸리는지 나타내는 것. 일반적으로 시간 복잡도를 나타내기 위해 점근적 표기법(asymptotic notation)을 사용한다. 점근적 표기법이란, 중요하지 않은 상수와 계수들을 제거해 알고리즘의 실행 시간에서 중요한 성장률에 집중하는 방법을 의미함 점근적이라는 의미는 가장..
테이블이 킷값을 기준으로 정렬되어 있다면 이진 탐색(binary search)이라는 보다 효율적인 알고리즘을 사용할 수 있다. 이것은 한 번 비교할 때마다 탐색 범위가 절반으로 줄어들기 때문에 '이진'이란 이름이 붙었다. 테이블의 모든 레코드가 킷값의 오름차순으로 정렬되어 있다고 가정해보자. 이진 탐색은 먼저 테이블의 중앙에 있는 레코드를 탐색 키와 비교한다. 1. 만약 중앙 레코드의 킷값이 탐색 키와 같으면 탐색은 성공한 것이고, 중앙 레코드의 위치(인덱스)를 반환하면 된다. 2. 중앙 레코드가 탐색 키보다 크면 그보다 오른쪽에 있는 모든 레코드는 탐색 키보다 크므로 더는 탐색할 필요가 없다. 3. 중앙 레코드가 탐색 키보다 작으면 오른쪽만 탐색하면 된다. 이렇게 이진 탐색에서는 단계마다 검색해야 할 ..
자료들이 뒤섞이고 잘 정리되어 있지 않다면 원하는 자료를 빨리 찾기 쉽지 않을 것이다. 만약 자료들이 일정한 규칙에 따라 잘 정리되어 있으면 훨씬 효율적인 탐색이 가능할 것이다. 결국 탐색 알고리즘은 자료들이 어떻게 정리되어 있는가에 많은 영향을 받는다. 이진 탐색 방법에 대해 알아보자! # 탐색이란? 사람들은 항상 무언가를 찾아 헤맨다. 입고 나갈 옷을 찾거나 점심 식사를 위해 맛집을 찾고, 여행에서 찍은 사진을 검색한다. 이것은 컴퓨터에서도 마찬가지이다. 탐색은 컴퓨터에서 가장 흔한 작업의 하나이고. 많은 시간이 요구되기 때문에 효율적인 탐색은 매우 중요하다. 탐색은 데이터의 집합에서 원하는 조건을 만족하는 데이터를 찾는 작업이다. 탐색을 위한 대상을 보통 레코드(record)라 하고, 이러한 레코드..
📍1. 스택(Stack) 데이터를 차곡차곡 쌓아 올린 형태의 자료구조이다. 따라서 가장 마지막에 들어온 자료가 가장 먼저 삭제되는 구조이다. 스택은 정해진 방향으로만 쌓을 수 있어, top으로 정한 곳을 통해서만 접근할 수 있다. - First In, Last Out 구조(후입선출) 👉 스택(Stack)이 사용되는 예시 - 웹 브라우저 방문기록(뒤로가기) - 실행취소(cmd + z) 💻 스택을 활용한 문제풀이 (Javascript) https://www.acmicpc.net/problem/10828 이 문제는 시간초과 때문에 애를 먹었다.. [내 답안] 을 보면 console.log가 주석처리 되어 있는걸 볼 수 있는데, 이게 초기 코드였고 계속 시간초과가 발생했다. 그래서 출력할 답을 담을 배열인 re..
구름톤 뽕 빠지기 전에 적어본 후기 구름톤은 3박 4일간 제주에서 진행되는 해커톤이다. # 구름톤 지원 계기 간단한 제 소개를 하자면! 저는 취업한지 9개월에 접어드는 프론트엔드 개발자입니다! 취업하고, 회사에 적응하고, 바빴던 프로젝트가 점차 끝나가고 있을 무렵 내 자신을 한 번 뒤돌아봤는데 회사라는 안식처에서 안주하는 삶을 살고 있는 것 같았고 내가 뭘 했지?? 싶었다. 회사에 다니면 내가 코딩 스킬이 팍팍 늘 줄 알았다. 근데 회사에서는 내가 개발을 하는 시간보다, Migration(기존 프로젝트가 Vue2를 사용했는데, Vue3로 바꾸는 작업)을 하는 시간이 더 길고 많았다. 나는 개발로서 몬가 퍼포먼스를 보이고 싶었고,, 도전하고 싶은 욕구가 샘솟았다. 그래서 갑자기 오키에서 사이드 프로젝트를 ..
모든 브라우저는 개발자 도구로 디버깅이 가능하다! pc에서 크롬 개발자 도구로 디버깅을 하다가 테스트를 위해 모바일로 접속했는데 에러가 생겨서 오잉? 모바일에서는 어떻게 디버깅을 하지?!! 하다가 알게된 방법 공유하기! 아이폰으로 사파리 브라우저에서 개발자 모드 디버깅 환경 구축하기! 준비물 : 맥, 아이폰, 케이블 1. 맥에서 Safari를 실행하고, 개발자 도구를 활성화 하기 safari 설정 > 고급 > 메뉴 막대에서 개발자용 메뉴보기 2. 아이폰 설정에서 Web Inspector 활성화 하기 아이폰 설정 > Safari > 고급 > 웹 속성 켜기 3. 맥과 아이폰 케이블로 연결 후, Safari에서 내 아이폰 기기 탐색 케이블을 연결하면 아이폰에서 "신뢰"를 클릭해서 연결을 승인해주고, Safa..
props 변경을 감지해서 함수를 실행시키고 싶었다. 즉, 'propData' 가 변경되면 testFunc 함수를 실행시키고 싶었는데, 생각대로 동작하지 않아서 어떻게 수정해야하는지 원인이 무엇인지 기록하자! # 해결방법 # 1. 변경 전 코드(동작 x) import { ref, watch } from 'vue'; const props = defineProps(['propData']); // props 정의 // watch(감시할 변수, (새로운 변수)=> {변경사항 있는 경우 실행되는 코드 }) watch(props.propData, (newVal) => { testFunc(newVal); }); let testFunc = (param) => { console.log(param) } # 2. 변경 ..
Vue3를 사용중인데 아래와 같은 에러가 종종 난다. cannot create property '' on ~ Uncaught TypeError: Cannot create property 'value' on number '0' let a = ref(0); let b = ref(0); let c = ref(0); let setFunc = (a, b, c) => { a.value = a; b.value = b; c.value = c; }; # 해결법 변수와 파라미터 이름을 동일하게 사용하면 나는 에러같다. 파라미터 이름을 변경해주면 에러는 사라진다. let a = ref(0); let b = ref(0); let c = ref(0); let setFunc = (AA, BB, CC) => { a.value = ..
😅문제 회사 내부 api를 사용하는데, api 응답으로 200은 뜨지만 데이터가 제대로 오지 않는 문제가 있었다. 백엔드 코드까지 보진 못했지만 서버에서 로그인을 한 유저인지 확인이 되어야 응답 데이터를 잘 넘겨준다고 했다. 근데 난 로그인 기능을 다 구현했고, 로그인 잘 동작하는것도 확인했는데 뭐가 문제인지 알 수 없었다!! 그러다 문제의 원인을 알게되었다! 서버는 아이디와 비밀번호를 확인해서 유저 정보가 맞는지 확인하고 sessionID를 클라이언트에 보내줘 인증상태를 유지한다. 클라이언트는 sessionID를 저장하고 있다가 다음 요청 때 저장해둔 sessionID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 함께 전송하는데, sessionID가 저장되지 않아 로그인이 된 건지 서버측에서 확인할 수 없..
I18n 라이브러리를 통해 다국어를 지원하는 방법과 줄바꿈 하는 방법 기록하기!! https://www.i18next.com/ Introduction - i18next documentation locize: Now, 'locize' is your efficient manager in charge of organizing and streamlining the translation process. It keeps all your language versions organized and ensures they're always accurate and up-to-date. So, if you want to introduce a new product o www.i18next.com https://vue-i18n...