[프로그래머스] 기능개발: math.ceil 대체 수식
·
TIL
문제https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이1def solution(progresses, speeds): answer = [] days_left = [(100 - progresses[i] + speeds[i] -1) // speeds[i] for i in range(len(progresses))] day = days_left[0] cnt = 1 for d in days_left[1:]: ..
[프로그래머스] 예산: O(n^2) -> O(n log n)
·
TIL
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr O(n^2)def solution(d, budget): d.sort() while sum(d) > budget: d.pop() return len(d) sum()을 이용해 간단하게 푼 방법 but..1. d.sort()시간 복잡도: O(n log n)sort()는 Timsort 알고리즘을 사용하므로 리스트 크기 n에 대해 O(n log n)의 시간이 ..
[프로그래머스] 큰 수 만들기: 문자열보다 리스트 사용하기
·
TIL
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   프로그래밍을 하다 보면, 코드가 짧을수록 좋다는 착각에 빠질 때가 있다. 나는 문제를 풀 때 문자열이 주어지면, 바로 그 문자열로만 해결하려는 경향이 있다. 하지만 짧은 코드가 항상 좋은 코드를 의미하는 것은 아니다. 문자열과 리스트의 차이점, 그리고 언제 리스트를 사용하는 것이 더 좋은가? https://ginghambagle.tistory.com/155 mutable(변경 가능)과 i..
[프로그래머스/SQL] 가격이 제일 비싼 식품의 정보 출력하기: 정렬 vs 서브쿼리
·
TIL
코딩테스트 연습 > SUM, MAX, MIN > 가격이 제일 비싼 식품의 정보 출력하기1. 정렬->1개만 출력SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICEFROM FOOD_PRODUCTORDER BY PRICE DESCLIMIT 1; 2. maxSELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICEFROM FOOD_PRODUCTWHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);  성능 비교서브쿼리 vs. 정렬 및 제한쿼리 1번은 테이블을 가격 기준으로 내림차순 정렬한 다음 상위 한 행만 가져옵니다. 인덱스가 제대로 설정되어 있다면, 이 방식이 더 ..
NestJS | TypeORM: entity 정의(soft delete, 추상클래스)
·
TIL
✔️ soft delete 전에는 soft delete를 위해서 is_active라는 컬럼을 추가해서 삭제 요청이 오면 실제 삭제 대신 is_active=false로 바꿔주는 작업을 했었다. TypeORM에서는 soft delete를 지원한다. 레코드를 삭제하는 대신 @DeleteDateColumn()이 붙어있는 컬럼(날짜)을 업데이트한다. 이 컬럼이 포함되면 데이터를 읽을 때 이 컬럼이 null인지 체크하는 where절이 추가된다. soft delete의 cascade도 가능하다. ✔️ 이력관리 데이터의 생성, 수정 이력을 관리하기 위한 컬럼으로 created, updated가 필요하다. 각각 데이터가 생성됐을때, 업데이트됐을 때의 시간을 timestamp로 기록해야 하는데 이것도 typeorm의 데코..
NestJS | @nestjs/config 패키지를 활용한 환경변수 관리 -> db연결
·
TIL
dotenv.config를 활용해서 NODE_ENV에 따라 각각 다른 db를 연결했던것을 @nestjs/config 패키지를 활용해서 ConfigModule을 동적 모듈로 사용하는 방법으로 변경하기 ✔️env파일 경로 설정하기 ConfigModule.forRoot()에 옵션값을 넘겨주면 동적 모듈을 생성할 수 있다. (method) ConfigModule.forRoot(options?: ConfigModuleOptions): DynamicModule 옵션에는 이런 값들을 넣을 수 있는데 envFilePath에 env파일의 경로를 주면 해당 파일을 루트경로에 있는 .env대신 읽어서 환경변수를 구성한다. 환경변수 파일들은 src/configs/envs에 넣어놨고 참고사이트를 참고해서 NODE_ENV에 따라..
NestJS | production/development환경 각각 다른 DB 사용하기(dotenv)
·
TIL
✔️ production/development 환경 구분하기 개발을 하면서 이것저것 테스트를 해보게될텐데 배포해서 출시된 프로덕트와 연결된 디비에다가 테스트를 막 하면 안되겠쥬..? 그래서 배포환경/개발환경일때 따라서 각각 다른 db를 사용해야 하는데 환경변수 관리 라이브러리 dotenv를 이용해서 하는 방법이 있다. 환경에 따라 서로 다른 .env파일을 읽도록 하는것. node.js는 NODE_ENV라는 환경변수를 활용하여 서버의 환경을 구분한다. package.json 파일을 수정하여 npm run start:dev 명령이 수행될 때 NODE_ENV가 development로 설정되도록 한다. // package.json "scripts": { ... "start:dev": "NODE_ENV=devel..
NestJS | 패키지 버전 지정해서 세팅하기
·
TIL
글로벌환경과 다른 nest 버전으로 프로젝트 시작하기 내 컴터에 깔린 nestjs 버전은 9.1.4이다. 그래서 그냥 nest new 프로젝트명 명령어로 프로젝트를 시작하면 아래처럼 ^9.0.0으로 깔리게 된다. 나는 8.2.x버전의 프로젝트가 필요한 상황이라 아래 명령어로 프로젝트를 시작했다. $ npx @nestjs/cli@버전 new 프로젝트명 npx @nestjs/cli@^8.2 new 프로젝트명 그럼 이렇게 8.0.0이상 버전으로 깔리게 된다. 더보기 8.2.0이 아니라 8.0.0이라서 package.json에서 직접 ^8.2.0으로 변경 후 npm install을 해봤는데 에러가 났다. ^8.0.0은 8이상이니까 8.2에서도 돌아가긴 할테니까 패쓰.... 9.1.4버전에서 nest new를 해..
반응형