TIL101 [백준]1007 벡터 매칭 1007번: 벡터 매칭 (acmicpc.net) 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속하는 모든 점은 한 번씩 쓰여야 한다. 벡터 매칭에 있는 벡터의 개수는 P에 있는 점의 절반이다. 평면 상의 점이 주어졌을 때, 집합 P의 벡터 매칭에 있는 벡터의 합의 길이의 최솟값을 출력하는 프로그.. TIL/SW&백준 문제 리뷰 2022. 8. 21. [Git] rebase conflict 해결기 (feat. rebase vs merge) 처음 git을 사용할 때 add, commit, push, merge (사실 혼자 할때는 merge도 거의 사용하지 않았다) 밖에 사용하지 않았는데, 갑자기 프로젝트를 진행하다가 merge 말고 rebase으로 해달라는 팀원의 요청을 듣고 rebase가 merge??... 싶었다 ㅎㅎ;; 아마 나와 같은 사람들이 많은 것인지 매우 기초적인 내용이여서인지는 몰라도 구글링하면 잘 설명한 자료가 정말 많았다. 그래서 rebase가 뭐냐? 말그대로 re base, 즉 base를 옮긴다는 말이다. merge는 합체라면 rebase는 합치고하자는 하는 브랜치의 내용을 이어 붙이는 것이다. merge와 rebase의 차이로 인해 발생하는 점은 merge의 경우 여러 개발자들이 협업하다보면 여러 브랜치들이 동시 진행될.. TIL/삽질 기록소 2022. 8. 18. [TypeScript] 이펙티브 타입스크립트 item 58 ~ 62 타입스크립트로 마이그레이션하기 대규모 프로젝트에선 점진적으로 진행 item 58 모던 자바스크립트로 작성하기 타입스크립트로 마이그레이션이 막막하면 예전 버전 자바스크립트에서 최신버전의 자바스크립트로 바꾸는 작업부터 진행 ECMAScript 모듈 사용하기 프로토타입 대신 클래스 사용하기 var 대신 let/const 사용하기 for 대신 for-of 또는 배열 메서드 사용하기 함수 표현식 보다 화살표 함수 사용하기 단축 객체 표현 보다 구조 분해 할당 사용하기 함수 매개변수 기본값 사용하기 저수준 프로미스나 콜백 대신 async/await 사용하기 연관 배열에 객체 대신 Map과 Set 사용하기 타입스크립트에 user strict 넣지 않기 (컴파일러 수준에서 사용됨) item 59 타입스크립트 도입 전에.. TIL/TypeScript 2022. 8. 18. [CS] 캐시(Cache), 지역성(Locality) 캐시(Cache)란? 자주 사용하는 데이터를 복사해두는 임시 장소이다. 메모리 계층 구조 (Memory Hierarchy) CPU는 작은 메모리일수록 빠르게 접근할 수 있음 + 자주 쓰는 데이터는 계속 자주 쓰인다 (= 시간 지역성) 위의 2가지 이유로 어떤 데이터를 접근하고자 할 때마다 SSD/HDD에 접근하여 데이터를 가지고 오는 것이 비효율적이기에 용도에 따라 메모리들을 쌓은 구조 윗쪽일수록 더 작고, 비싸고, 빠른 메모리 반대로 밑쪽일수록 더 크고, 싸고, 느리다 자주 쓰는 데이터일수록 윗쪽 계층에 두고 반대의 경우일수록 아랫쪽에 두어 최소의 비용으로 최대의 효율을 지향한다 시간 지역성 자주 쓴 데이터는 앞으로도 자주 쓸 것이다 공간 지역성 사용된 데이터와 인접한 데이터가 사용될 것이다 => 특정.. TIL/TIL 2022. 8. 18. [DB] Delete vs Truncate vs Drop 아마 DB 시스템에 따라 다를 수도 있을 것이라 생각되지만 보편적으로 DELETE 데이터는 지워지지만 테이블 용량이 줄어들지 않음 ( 데이터 적재하던 storage 반납 X) 원하는 데이터만 지울 수 있음 자동 commit이 아니기 때문에 커밋전이면 삭제 후 롤백 가능 TRUNCATE 용량이 줄어들음 ( 최초 할당 storage 남기고, 데이터 적재하던 storage 반납) 인덱스 삭제 테이블은 삭제되지 않고, 데이터만 삭제 자동 commit이기에 삭제 후 롤백 불가 DROP 테이블 전체를 삭제 자동 commit이기에 롤백 불가 TIL/DB 2022. 8. 17. [DB] Postgres 명령어 내가 실제로 써본 명령어를 기록하고자 한다 ( 쓴것은 다시 쓸 확률이 높기에, feat.시간 지역성) sudo -u postgres psql postgres (기본으로 있는 유저)로 psql에 접속하는 명령어 나의 경우 psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432 뜰 때 사용하였다 \du # list of roles \l # list of databases \c # DB이름 데이터베이스 'DB이름' 접속 \dt #list of relations, 테이블들 나옴 select * from 테이블이름 # 테이블 '테이블이름' 전체 조회 truncate table 테이블이름 # 테이블 '테이블이름' truncate .. TIL/DB 2022. 8. 17. [TypeScript] 이펙티브 타입스크립트 item 53 ~ 57 item 53 타입스크립트 기능보다 ECMAScript 기능을 사용하기 일반적으로 타입스크립트 코드에서 타입정보를 빼면 자바스크립트가 되지만 열거형, 매개변수 속성, 트리플 슬래시 임포트, 데코레이터는 타입정보를 제거한다고 자바스크립트가 되지는 않음 => 타입스크립트의 역활을 명확하기 위해 위에 말한 것들은 사용하지 않는 것이 좋음 item 54 객체를 순회하는 노하우 객체를 순회하며 키와 값을 얻을 때 keyof : 정확한 타입을 원할 때 interface Obj { one: string; two: string; three: number; } const A: Obj ={ one: '1', two: '2', three: 3 } let k: keyof Obj for (k in A){ const v = A[.. TIL/TypeScript 2022. 8. 16. [백준]1786 찾기(작성중) 1786번: 찾기 (acmicpc.net) 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m www.acmicpc.net 문제 워드프로세서 등을 사용하는 도중에 찾기 기능을 이용해 본 일이 있을 것이다. 이 기능을 여러분이 실제로 구현해 보도록 하자. 두 개의 문자열 P와 T에 대해, 문자열 P가 문자열 T 중간에 몇 번, 어느 위치에서 나타나는지 알아내는 문제를 '문자열 매칭'이라고 한다. 워드프로세서의 찾기 기능은 이 문자열 매칭 문제를 풀어주는 기능이라고 할 수 있다. 이때의 P는 패턴이라고 부르고 T는 텍스트라고 부른다. 편의.. TIL/SW&백준 문제 리뷰 2022. 8. 13. [백준] 세그먼트 트리 모음(10868, 2357, 2042, 11505) 10868번: 최솟값 (acmicpc.net) 2357번: 최솟값과 최댓값 (acmicpc.net) 2042번: 구간 합 구하기 (acmicpc.net) 11505번: 구간 곱 구하기 (acmicpc.net) 4문제 다 세그멘트 트리 알고리즘 문제이다 순서대로 풀면 좋게 순서를 나열했다 나는 멋모르고 막 풀다보니 역순으로 풀었다 ㅎㅎ;; 11505 구간 곱 구하기를 못 풀겠어서 풀이를 보며 공부하다가 2042번을 알게 되고 이 문제도 풀이를 보며 공부하면서 풀고 10868 번을 보니깐 어떻게 접근해야될지 확 느낌이 오고 풀리는게 연습이 되는 느낌이였다 만약 처음 세그먼트 트리를 공부한다면 위에 올린 순서대로 풀어보면 좋지 않나 싶다. 4문제 다 세부적으로 풀이는 조금씩 다르지만 세그먼트 트리를 활용하여 .. TIL/SW&백준 문제 리뷰 2022. 8. 12. [Debug] connection to server on socket /var/run/postgresql/.s.pgsql.5432 에러 해결과정 에러 상황 코드상 entity에서 컬럼을 수정하여 EC2 에 올려서 사용하고 있던 Postgres에서 기존의 데이터와 새로운 DB 테이블이 충돌이 나서 테이블을 밀어주고 다시 실행하려고 하는 상황에서 유저 비밀번호를 까먹어서 이를 복구하려고 설정 파일을 건들다가 보니 정확히 어떤 이유인지 모르겠는데 이런 오류를 만나게 되었다. 그냥 postgresql에 접속하려고 하면 저 오류가 무지성으로 나와서 작업을 진행할 수 없었다 해결 과정 이를 해결하기 위해 스택 오버플로우등 구글링을 통해 얻은 방법들이 많았는데 잘 해결되지 않았고 결국 Postgresql 을 밀었다가 다시 까는 무식한 방법을 선택했다... 하지만 밀고 깔았을 때도 Postgresql은 제대로 돌아가지 않았고 service status post.. TIL/삽질 기록소 2022. 8. 9. [TypeScript] 이펙티브 타입스크립트 item 50 ~ 52 item 50 오버로딩 타입보다는 조건부 타입 사용하기 조건부 타입은 추가적인 오버로딩 없이 유니온 타입을 지원할 수 있음 // 오버로딩 타입 function double(x: number | string): number | string; // 조건부 조건 function dobule( x: T ): T extends string ? string : number; //=> string 의 부분 집합이면 string, 그외는 number function double(x: any) { return x + x; } item 51 의존성 분리를 위해 미러 타입 사용하기 필수가 아닌 의존성을 분리할 때는 구조적 타이핑을 사용 작성 중인 라이브러리가 의존하는 라이브러리의 구현과 무관하게 타입에만 의존한다면, 필요한.. TIL/TypeScript 2022. 8. 9. [TypeScript] 이펙티브 타입스크립트 item 45 ~ 49 item 45 devDependencies에 typescript 와 @types 추가하기 dependencies: 현재 프로젝트를 실행하는데 필수적인 라이브러리들 devDependencies: 현재 프로젝트를 개발하고 테스트하는데 사용되지만 런타임에는 필요없는 라이브러리들 peerDependencies: 런타임에 필요하지만, 의존성 직접 관리하지 않는 라이브러리들 ex) 플러그인 공통적으로 고려해야할 의존성 2가지 1. 타입스크립트 자체 의존성을 고려해야 함 시스템 레벨로 설치한다면 팀원들간의 버전 차이로 인한 비용이 발생할 것이기에, 시스템 레벨 보다는 devDependencies에 넣는 것이 좋음 2. 타입 의존성(@type)을 고려해야 함 사용하려는 라이브러리에 타입 선언이 포함되어 있지 않더라도 .. TIL/TypeScript 2022. 8. 8. 이전 1 2 3 4 5 6 7 ··· 9 다음 반응형