전체 글

전체 글

    5/12 금 [LeetCode #118] 파스칼의 삼각형 TIL

    5/12 금 [LeetCode #118] 파스칼의 삼각형 TIL

    [LeetCode] 118. Pascal's TrianglePascal's Triangle - LeetCodeCan you solve this real interview question? Pascal's Triangle - Given an integer numRows, return the first numRows of Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it as shown: [https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif] Example 1: Input: numRows ..

    5/10 수 [LeetCode #217] 배열에 중복되는 값이 있으면 true 반환하기 TIL

    5/10 수 [LeetCode #217] 배열에 중복되는 값이 있으면 true 반환하기 TIL

    [LeetCode] 217. Contains DuplicateContains Duplicate - LeetCodeCan you solve this real interview question? Contains Duplicate - Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct. Example 1: Input: nums = [1,2,3,1] Output: true Example 2: Input: nums = [1,2,3,4] Output: false Example 3: Input: nums = [1,1,1,3,3..

    5/9 화 [LeetCode #26] 순서를 유지하여 배열에서 중복 숫자 제거하기 TIL

    5/9 화 [LeetCode #26] 순서를 유지하여 배열에서 중복 숫자 제거하기 TIL

    [LeetCode] 26. Remove Duplicates from Sorted ArrayRemove Duplicates from Sorted Array - LeetCodeCan you solve this real interview question? Remove Duplicates from Sorted Array - Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place [https://en.wikipedia.org/wiki/In-place_algorithm] such that each unique element appears only once. The relative order of the ele..

    5/9 화 [프로그래머스] 해시(Hash), 폰켓몬 TIL

    5/9 화 [프로그래머스] 해시(Hash), 폰켓몬 TIL

    [프로그래머스] 해시 > 폰켓몬 https://school.programmers.co.kr/learn/courses/30/lessons/1845나의 풀이: function solution(nums) { // nums / 2와, 폰켓몬 종류 수 중에서 // 폰켓몬 종류 수 10000) { console.log('nums의 길이가 10,000을 넘어갑니다'); return; } const map = new Map(); nums.forEach((type) =..

    4/25 화 (정규표현식) TIL

    정규 표현식 (Regular Expression): 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단.: 문자열에서 특정한 문자를 찾아내는 도구.: 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어. 문자열을 대상으로 패턴 매칭 기능을 제공함. 패턴 매칭 기능: 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능. 예시) 유효한 휴대폰 전화번호인지 체크하기// 사용자로부터 입력받은 휴대폰 전화번호 const tel = '010-1234-567팔'; // 정규 표현식 리터럴로 휴대폰 전화번호 패턴을 정의한다. const regExp = /^\d{3}-\d{4}-\d{4}$/; //..

    4/25 화 [프로그래머스] 해시(Hash), 완주하지 못한 선수와 Object, Map의 시간복잡도 TIL

    4/25 화 [프로그래머스] 해시(Hash), 완주하지 못한 선수와 Object, Map의 시간복잡도 TIL

    [프로그래머스] 해시 > 완주하지 못한 선수 https://school.programmers.co.kr/learn/courses/30/lessons/42576나의 풀이: // 총 시간 복잡도는: O(M) + 2*O(N) => M = N - 1일 것을 생각하면 대략 3 * O(N), 즉 O(N)이다. function solution(participants, completion) { // 1. completion 객체 명단을 만든다. => O(M) const completed = new Map() for (const completer of completion) { // O(M) if (completed.has(completer)) { // O(1) completed.set(completer, complete..

    4/24 월 (클라우드 컴퓨팅의 이점과 분류) TIL

    클라우드 (Cloud) 컴퓨팅이란: IT 시스템을 직접 구매하는 대신 임대하여 사용할 수 있는 서비스: 인터넷을 통해 구독 기반의 데이터 스토리지, 보안, 네트워킹, 소프트웨어 애플리케이션 및 비즈니스 인텔리전스와 같은 서비스를 제공하는 것. 서비스의 유형에 따른 분류SaaS, Software as a Service: 서비스 공급자에 의해 실행되고 관리되는 완전한 제품을 서비스하는 것. 한 마디로 웹 브라우저를 통해 언제 어디서나 소프트웨어에 액세스할 수 있는 것. 서비스 제공자는백업, 유지보수, 업데이트를 관리한다. SaaS 솔루션의 종류에는 전사적 자원 관리(ERP), 고객 관계 관리(CRM), 프로젝트 관리 등이 포함된다. PaaS, Platform as a Service: 클라우드 기반의 애플리케..

    4/24 월 [프로그래머스] 해시(Hash) 문제와 이터러블(Iterable) TIL

    4/24 월 [프로그래머스] 해시(Hash) 문제와 이터러블(Iterable) TIL

    [프로그래머스] 해시 > 의상https://school.programmers.co.kr/learn/courses/30/lessons/42578나의 풀이: // 더 깔끔히 정리한 버전 function solution3(clothes) { const map = {} for (const [name, type] of clothes) { map[type] = (map[type] ?? 0) + 1; // map[type] = (map[type] || 0) + 1; // -> 이것도 된다. } let count = 1; for (const key in map) { count *= (map[key] + 1); } return count - 1; } // Map을 이용하기 function solution4(clothes..

    4/21 금 (모듈과 테스트 코드에 대하여) TIL

    모듈 (Module)이란? 그리고 Node.js에서 모듈을 사용하는 방법? (내장/외부/사용자 정의 모듈 사용 가능) 모듈: JavaScript 파일 단위로 분리된 코드. 특정한 기능을 가진 여러 개의 함수와 변수들의 집합. 용례: 고수준 계층의 모듈(도메인)이 저수준 계층의 모듈(하부 구조)에 의존하게 두지 말자 - 의존성 역전 원칙node_module = npm install 명령어를 통해 설치된 모듈 파일들이 모여있는 곳. 하나의 모듈에서 다른 모듈을 호출하여 사용할 수 있다. 모듈은 그 자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로도 사용될 수 있다. Node.js의 서버 모듈에는 대표적으로 http 모듈과 Express 모듈이 있다. tsconfig.json에서 esModuleInter..

    4/20 목 (프로미스(async/await)와 클로저) TIL

    프로미스 (Promise)와 async/await에 대하여 ES6 이전: 함수 안의 함수 안의 … 함수: 콜백 지옥: 콜백의 결과값을 그 다음 함수에 대입하려면 그 값이 살아있는 블록(=지금 함수)안에 또 콜백을 부르는 함수를 넣는 식으로 들어가야 했음. 블록 안의 블록 안의 블록이 계속 이어짐. ES6의 Promise 객체 도입: Promise와 .then()의 조합으로 비동기 함수로 받는 콜백 결과값을 선형적(체이닝)으로 연결시키게 됨.ES6부터는 Promise라는 걸 도입, 콜백 지옥을 해결함. 비동기 수행을 하는 함수는 Promise 객체를 반환.⇒ 이 Promise는 함수를 매개변수로 받음. ex)function 고교_DB_주소_조회_Promise(학생_주민번호, 고교명) { return new..

    4/19 수 (소프트웨어 개발 방법론 개괄) TIL

    개발 방법론 (Development Methodology)에 대하여: 시스템 개발의 이론적 기반: 소프트웨어를 개발하는 방법에 대한 이론으로서, 소프트웨어 개발 과정, 절차, 방법, 산출물, 기법, 도구들을 체계적으로 정리하고 표준화시킨 것. 과거에 비해 개발 및 시스템 통합 작업이 복잡하고 긴 개발일정을 필요로 하게 됨.⇒ 몇몇 개발자에 의존하기 보다 프로젝트의 관리와 이의 바탕이 되는 개발 방법론의 중요성이 부각되게 됨. 연도별 주요 소프트웨어 개발 방법론의 변화 (참고: https://www.koscom.co.kr/portal/main/contents.do?menuNo=200368) 1. 구조적 방법론: 절차 중심의 SW개발 방법론. 폭포수 모델이 대표적DFD (Data Flow Diagram, 데..

    4/18 화 (문제풀이) TIL

    ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ [프로그래머스] 문자열 밀기https://school.programmers.co.kr/learn/courses/30/lessons/120921나의 풀이: // 016-문자열 밀기.js // 시간복잡도는 O(N) function solution(A, B) { if (A === B) { return 0; } // 오른쪽으로 미는 것이므로 만들어지는 순환 문자열은 잘리는 부분 i가 오른쪽 끝부터 왼쪽으로 이동해야 함. for (let i = A.length - 1; i > 0; i--) { // 시간복잡도 O(1) const newString = A.slice(i) + A.slice(0,..

    4/3 월 (수료하다) TIL

    최종 발표가 있던 날이다. 하루 종일 일이 손에 안 잡혔다. 배가 안 고프다가 갑자기 급격하게 꼬르륵 거리기도 하였다. 각 팀 부스에서 손님(?)을 먼저 받아 Q&A 시간을 가졌고 우리 부스는 외부 손님 한 분을 맞아 30분간 얘기를 나눴다. 오신 분이 우리 전부가 웃는 것보다 더 활짝 웃으면서 얘기를 이끌어줘서 편안하게 얘기할 수 있었다. 감사했다. 사실 여기에 깜짝 비화가 숨겨져 있는데, 지금은 생략하겠다. 아직 결말이 나지 않은 이야기라서 한달 쯤 뒤 해피엔딩이 나면 적을 생각이다. 1시간 후 저녁 8시부터 가운데 발표장으로 모여 최종 발표 세션을 가졌다. 각 팀당 10분을 가이드라인으로 잡았는데 우리 2조가 10분을 제일 잘 지켜서 (심지어 그보다 덜 됐을 수 있다) 깔끔하게 딱 마무리지었다. 발..

    4/1 토 (Redis에 대하여, CPU와 core에 대하여) TIL

    4/1 토 (Redis에 대하여, CPU와 core에 대하여) TIL

    (최종 프로젝트 마무리 중) 보던 페이지(아직 정리 전): 여기 잠깐 봄: (1시간 40분)[우아한테크세미나] 191121 우아한레디스 by 강대명님💻 우아한형제들의 기술조직 이야기를 전하는 우아한Tech 유튜브입니다.💻 1) Redis 는 어떤 것이고 어떤 식으로 사용할 수 있는가? 2) Reids 기본 기능 3) Redis 운영시 장애 포인트등 잘 쓰는법 우아한테크세미나는 구성원분들이 관심을 갖고 있는 기술적 주제에 대해 내외부 강사분을 통해 살펴보는 시간으로 꾸며지며, 구성원들뿐만 아니라 같은 고민과 관심을 가진 외부 개발자분들도 초대하여 진행됩니다.https://www.youtube.com/watch?v=mPB2CZiAkKM대략 목차: 왜 collection이 중요한가 ?11:11redis를 실행..

    3/31 금 (V8 엔진에 대하여 - Node.js가 빌드(컴파일)을 한다고?) TIL

    (최종 프로젝트 마무리 중) 보던 페이지: V8 엔진이란? (’node인데 얘가 빌드(컴파일)을 하는 게 맞나?’) - https://1000hg.tistory.com/48 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ V8 엔진 https://blog.bitsrc.io/secret-behind-javascript-performance-v8-hidden-classes-ba4d0ebfb89d: Google의 오픈소스 자바스크립트 엔진. C++로 작성됐고 구글 크롬, 크로뮴 웹 브라우저와 Node.js에 쓰임. 컴파일을 한다는 것은 코드를 기계어로 변환한다는 것이다. 당연히 운영체제에 맞는 기계어여야 할 터이므로 컴파일된 프로그램은..

    3/30 목 (Entity 관계 설정 다시 하고 발표 영상 피드백도 받다) TIL, TIT

    (최종 프로젝트 마무리 중) 오늘 한 일: requestList.ejs에서 ‘비로그인 상태에서는 getRequestsByCursor 불러오게 분기하기 entity들에서 ManyToOne, OneToMany cascade 옵션 뒤바꾸기dbeaver에서 Ctrl+Shift+F 누르면 자동 정렬 된다. 왜 쿼리는 조인해오는 테이블의 deleted_at=null도 조건으로 검사해오도록 짜여졌는데 왜 결과는 그게 아닌가? Left Join이 수상하다. 내일 할 일: 피드백 받은 ‘재 페인팅해야 하는 컴퓨테이션을 제거 및 개선했다…’ 부분 알아보고 ppt 고치기 (링크: https://docs.google.com/spreadsheets/d/13-EjXTbm2U_NYutdDJg7IfMNXWL5b3P1rdBrROmTA..

    3/29 수 (최종 발표 대본 제작) TIL

    3/29 수 (최종 발표 대본 제작) TIL

    (최종 프로젝트 진행중) 내일 할 일: requestList.ejs에서 ‘비로그인 상태에서는 getRequestsByCursor 불러오게 분기하기 entity들에서 ManyToOne, OneToMany cascade 옵션 뒤바꾸기dbeaver에서 Ctrl+Shift+F 누르면 자동 정렬 된다. 왜 쿼리는 조인해오는 테이블의 deleted_at=null도 조건으로 검사해오도록 짜여졌는데 왜 결과는 그게 아닌가? Left Join이 수상하다. 조사할 항목 및 문제상황 기록: 발행-구독 모델(Publish–subscribe pattern)발행구독 패턴은, 비동기 메시징 패러다임이다.발행자와 구독자가 있고, 그 사이에 브로커(=메시지 큐)가 존재하는 형태이다.이것의 특징을 요약하면,1. 발행자 메시지의 수신자가..

    3/28 화 (최종 발표 PPT 제작 및 자료 조사) TIL, TIT

    3/28 화 (최종 발표 PPT 제작 및 자료 조사) TIL, TIT

    (최종 프로젝트 진행중) 한 일: 최종 PPT 자료 만들기 ‘주별 진척도’ 그리기 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ [TypeORM] queryBuilder의 andWhere 조건문에 삼항 연산자를 적용하고 싶었다 ✔️이것과 비슷한 조건절을 queryBuilder로 구현하고 싶었다: // 커서 페이지네이션 async getPostsByCursor(endCursor?: number) { const isFirstPage = !endCursor; const [posts, total] = await this.postsRepository.findAndCount({ take: 7 + 1, where: !isFirstPage ?..

    3/27 월 (Timezone 트러블슈팅 정리중) TIL, TIT

    (최종 프로젝트 진행중)내일 할 일 시간 차 트러블슈팅 정리하기 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ 시간 차 트러블슈팅중…UTC 적용전…현재 사용하는 Timezone 정리: 분류타임존비고AWS RDS DBMSUTCTypeORMZ = UTCTypeORM에게 너가 연결할 DBMS는 UTC로 되어있다! 라고 알려주는 거죠.옵션에 timezone=’Z’라고 추가함서버컴퓨터(Heroku) UTC아! 이 컴퓨터의 ‘로컬 타임’이 KST나 en-US 등이 아니고, UTC로 되어 있다는 뜻이었다..! 여기서 프론트에서 “Asia/Seoul”로 바꿔서 출력해주는 게 맞는 것이었다. 개발컴퓨터KST무시하자 = “Asia/Seoul”로 ..

    3/25 토 (중복 렌더링 트러블슈팅 완료) TIL, TIT

    (최종 프로젝트 진행중) 할 일: 3번씩 HTTP 요청 보내던 것 시간차 조사하기 ※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※ 문제 상황: 페이지를 호출할 때 첫 번째 GET 요청 후 마지막에 2번의 똑같은 요청이 더 생긴다. 다른 팀들에도 물어봤는데 다들 이런 현상은 없다고 한다. 튜터님과 함께 고민해봤지만 이유를 알 수 없어 일단 물러나왔다. 저녁이 되고 우리 팀원 중 한 명의 로컬 환경(localhost)에서는 이런 현상이 없다는 점에 방점을 두고 조사를 이어나갔다. 어떤 페이지에 들어가든 이런 현상이 발생한다는 것도 힌트가 될 수 있을 것 같았다. 우리 프로젝트는 테두리 템플릿을 두고 가운데 내용물을 바꿔 끼워가며 페이..