일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 해시
- 스프링
- Spring
- C언어
- 코딩테스트
- 가상면접사례로배우는대규모시스템설계기초
- 구조체배열
- 카카오
- 카카오 코테
- 알고리즘
- 코테
- C++
- spring boot
- nestjs typeorm
- nestjs auth
- python
- TypeORM
- 프로그래머스
- @Component
- 시스템호출
- OpenCV
- 파이썬
- AWS
- thymeleaf
- @Autowired
- 컴포넌트스캔
- git
- nestJS
- Nodejs
- 카카오 알고리즘
- Today
- Total
목록전체 (333)
공부 기록장 💻
코딩테스트 연습 - 두 큐 합 같게 만들기 문제 설명 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 원소가 추가됩니다. 예를 들어 큐 [1, 2, 3, 4]가 주어졌을 때, pop을 하면 맨 ..
코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다. 이렇게 게임을 진행할 경우,0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, …순으로 숫자를 말하면 된다. 한편 코딩 동아리 일원들은 컴퓨터를 다루는 사람답게 이진수로 이 게임을..
오세유 프로젝트를 진행하면서, 기존에 개발했던 jwt 기반 auth 방식에서, REST API를 통해 카카오 소셜 로그인으로 변경하는 것으로 결정하였다. 따라서 공식 문서 (https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#before-you-begin-process , https://developers.kakao.com/docs/latest/ko/kakaologin/common#authorization-consent-item ) 의 내용을 참고하여 먼저 카카오 로그인의 과정을 정리하며 이해를 돕고,NestJS 프레임워크 상에서 구현을 해보고자 한다. 카카오 로그인 기능 카카오 로그인은 카카오 계정으로 다양한 서비스에 로그인할 수 있도록 하..
튜플 (2019 카카오 개발자 겨울 인턴십) 코딩테스트 연습 - 튜플 문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..
주차 요금 계산 (2022 K.B.R) 코딩테스트 연습 - 주차 요금 계산 더보기 문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 입/출차 기록 자동차별 주차 요금 어떤 차량이 입차된 후에 출차된 내역이 없다면, 23:59에 출차된 것으로 간주합니다. 0000번 차량은 18:59에 입차된 이후, 출차된 내역이 없습니다. 따라서, 23:59에 출차된 것으로 간주합니다. 00:00부터 23:59까지의 입/출차 내역을 바탕으로 차량별 누적 주차 시간을 계산하여 요금을 일괄로 정산합니다. 누적 주차 시간이 기본 시간이하라면, 기본 요금을 청구합니다. 누적 주차 시간이 기본 시간을 초과하면, 기..
K진수에서 소수 개수 구하기 (2022 K.B.R) 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211..
코딩테스트 연습 - 수식 최대화 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다.이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다.해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다.단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > +..
캐시 (2018 K.B.R) 코딩테스트 연습 - [1차] 캐시 문제 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다.이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다.어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 있지만 캐시 크기를 얼마로 해야 효율적인지 몰라 난감한 상황이다. 어피치에게 시달리는 제이지를 도와, DB 캐시를 적용할 때 캐시 크기에 따른 실..
위장 (level 2) 코딩테스트 연습 - 위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 ..
완주하지 못한 선수 (level 1) 코딩테스트 연습 - 완주하지 못한 선수 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 pa..
문제 설명 코딩테스트 연습 - 순위 검색 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종료되었습니다. 이번 채용에서 지원자는 지원서 작성 시 아래와 같이 4가지 항목을 반드시 선택하도록 하였습니다. 코딩테스트 참여 개발언어 항목에 cpp, java, python 중 하나를 선택해야 합니다. 지원 직군 항목에 backend와 frontend 중 하나를 선택해야 합니다. 지원 경력구분 항목에 junior와 senior 중 하나를 선택해야 합니다. 선호하는 소울푸드로 chicken과 pizza 중 하나를 선택해야 합니다. 인재영입팀에 근무하고 있는 니니즈는 코딩테스트 결과를 분석하여 채용에 참여한 ..
현재 진행 상황을 보고해 보자면, 7월 말부터 오세유 프로젝트가 시작해, 벌써 한 달 반이라는 시간이 흘렀다. 나를 포함한 우리 팀원 3명은 프로젝트 진행과 개발, 배포에 박차를 가하고 있는 중이다. 7/20 첫 회의부터 시작해서, 특별한 일이 있는 경우를 제외하고 매주 수요일마다 회의를 진행해 왔다. 초반만 해도, 11월 즈음까지 장기간에 걸쳐 각자 스터디와 개발을 진행하여 배포에 도전해 보는 것을 목표로 하여, 천천히 여유로운 마음으로 프로젝트를 진행될 것을 예상했다. 하지만 최근 몇 주에 걸쳐 다들 열심히 달려오다 보니, 어느새 벌써 배포 테스팅 단계에 이르렀다. (실제 배포는 아니고, 배포 "테스트"에 성공했다는 뜻!) 그래서 그동안 프로젝트 진행 상황을 기록하고 회고하고자 짧은 글을 남겨보려고 ..
Github Actions는 Github 에서 공식적으로 제공하는 CI/CD 툴, 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼, 즉 다시 말해 개발의 Work Flow를 자동화할 수 있게 도와주는 도구이다. 오세유 프로젝트를 진행하면서 AWS EC2 인스턴스를 생성하고, API 테스트를 하는데 있어 추후 CICD 파이프라인을 구축하여 배포와 빌드, 테스트를 자동화하고자 Github Actions에 대해 공부해보고자 한다. Github Actions에 대해 알아보기전, 우선 CI/CD가 무엇인지부터 살펴보자. CI/CD란 무엇인가? CI는 Continuous Integration(지속적 통합) , CD는 Continuous Delivery(지속적 전달)의 줄임말이다. - CI :..
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개발자 공채 카카오 공채, 신입 개발자 코딩 능력만 본다 카카오, 신입 공채.. "코딩 실력만 본다" 카카오 "코딩 능력만으로 2018 신입 개발자 뽑는다" 기사의 제목을 기준으..
Branch strategy Branch Name 설명 main 초기 세팅 develop 로컬 develop merge 브랜치 개발자1-dev 개발자1 로컬 develop 브랜치 개발자2-dev 개발자2 로컬 devleop 브랜치 local-develop_feature/#issue 각자 기능 추가하는 브랜치 (#issue - 몇번째 PR인지) Git workflow local - feature에서 각자 기능 작업 작업 완료 후 local - develop에 PR 후 merge 이후 remote - develop으로 PR 서로의 코드 리뷰 후 Confirm 받고 Merge remote - develop에 Merge 될 때 마다 모든 팀원 remote - devleop pull 받 Branch 명령어 정리 ..
NestJS 프레임워크에서 구인글 등록하는 Recruitment Post 기능을 만들어보자. 이전에 작성했던 회원가입 기능 - 새로운 유저 등록 (https://dream-and-develop.tistory.com/197) 부분과 동일한 방식으로 구현을 하였다. 또한 지난 시간에 Recruitment 모델을 만든 것을 바탕으로 서비스와 컨트롤러를 작성해보자. (https://dream-and-develop.tistory.com/208) 우선 recruit의 전체 디렉터리의 구조는 다음과 같다. Recruit Repository 우선 recruit.repository.ts 는 다음과 같이 작성해주자. 이전에 User Repository 작성했던 것과 동일하게, typeorm 최신 버전에서 사라진 Entit..
오세유 프로젝트의 User, Recruitment 테이블 Entity를 생성하고, 두 테이블 간 Relations 을 정의하는 부분까지 NestJS 프레임워크를 이용해 구현해보자. ER Diagram 먼저 전체적인 ER Diagram을 살펴보자. 테이블은 User, Recruitment, Application, Bookmark, Payment 크게 5개이다. 현재까지는 완성된 ER 설계본은 아니며, 추후에 개발을 하며 hash태그 기능을 비롯한 기능들을 개발, 구현하며 필요에 따라 테이블은 추가될 수 있다. User Table 먼저, 사용자 User 유저 엔티티에 포함되어야 할 칼럼들은 다음과 같다. primary key로 사용될 id, 사용자 ID, 비밀번호, 휴대폰번호, 프로필 사진, created/..
보호되어 있는 글입니다.
Github에 수정한 repository를 push하는 경우 다음과 같은 오류가 발생하는 경우가 있다. 파일의 끝에 개행문자('\n') EOF 가 포함되어 있지 않아 No newline at the end fof file 에러가 뜬 것이다. EOF 문제가 왜 발생하는가? 문제가 왜 발생하는지 찾아보니, 옛날 IEEE가 책정한 POSIX 규칙이기 때문이라고 한다. POSIX (Portable Operating System Interface) 란 UNIX 운영체제에 기반한 OS 인터페이스를 말하는데, 서로 다른 유닉스 OS의 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 가발하기 위한 목적으로 IEEE (Institute of Electrical and Electronics Engineers) 에서..
이전에 JWT에 대해 공부를 해보았다. NestJS 프레임워크 내에서 로그인 과정에서 JWT 토큰을 발급하고, JWT 토큰을 이용한 인증 기능을 구현해보도록 하자. 먼저 다음 명령어를 터미널에 입력하여 nestjs에서 제공하는 jwt 패키지를 설치하자. $ npm i --save @nestjs/jwt JWT 모듈 등록 auth.module.ts 에 다음과 같이 JwtModule 을 등록하자. imports 부분에 다음과 같이 추가를 해주도록 한다. secret 키를 SECRET 으로 지정해주고, signOptions로는 토큰 만료 시간을 300초로 지정해준다. import { JwtModule } from '@nestjs/jwt'; @Module({ imports: [ TypeOrmExModule.for..