분류 전체보기

    K번째수 (정렬 Lv1 / JS)

    코딩테스트 연습 > 정렬 > K번째수 Lv1 https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript 문제정리 array를 commands의 값에 따라 자르고 정렬시켜 해당 위치에 값이 무엇인지 요구하는 문제입니다. commands의 값이 2중배열로 여러개 존재하다보니 반복문을 사용하였습니다. 코드 commands의 첫 번째, 두 번째 인자는 어디서 부터 어디까지 자르는 값이고 자르는데에는 slice를 사용하였습니다. 그리고 정렬은 sort를 사용하였고 세 번째 인자를 통해 해당 값을 result에 push 하는 방법을 사용했습니다. function solution(array, commands) { let result = [..

    문자열 내 마음대로 정렬하기(연습문제 Lv1 / JS)

    코딩테스트 연습 > 연습문제 > 문자열 내 마음대로 정렬하기 Lv1 https://programmers.co.kr/learn/courses/30/lessons/12915 문제정리 보통 알파벳 순으로 정렬을 한다고 하면은 제일 앞글자로 정렬을 하는 것입니다. 하지만 여기서 문제는, 말 그대로 내 맘대로 정렬하기입니다. 알파벳으로 정렬한다는 것이 무조건 앞의 글자가 아니라는 뜻입니다. 그래서 strings라는 배열과, n이라는 몇 번째 글자를 기준으로 할 것인지 input 값을 줍니다. 그래서 여기서 sort를 사용할 것인데, 항상 무심코 a-b를 주로 사용해 왔는데 조건을 줄 수 있는 것을 MDN을 우연히 보고 알았습니다. https://developer.mozilla.org/ko/docs/Web/Java..

    완주하지 못한 선수(해시 Lv1 / JS)

    코딩테스트연습 > 해시 > 완주하지 못한 선수 Level 1 https://programmers.co.kr/learn/courses/30/lessons/42576?language=javascript 문제 정리 input값 participant, completion 두 개의 배열이 있습니다. 여기서 participant 배열에 인자가 하나 더 추가가 되었는데, 추가된 인자 하나를 찾는 문제 입니다. 코드 제가 생각한 방향은, 돌연변이 하나를 찾는 느낌이기에 알파벳 순으로 정렬을 합니다. 그리고 각각 첫 번째 인자, 두 번째 인자 점점 비교를 하다보면 같지 않은 순간이 올 텐데 같지 않은 순간에 participant의 값을 리턴 하면 된다고 생각했습니다. function solution(participant..

    코드스테이츠 프로젝트 회고(프로젝트 2주, 4주)

    2주 프로젝트 weavel.site 4주 프로젝트 yeollin-jib.shop 길지만 짧은 프로젝트가 모두 끝났습니다. 저에게는 지루 했던 섹션 1~3 보다 더욱 재미있었습니다. 프로젝트는 실전이라는 느낌이 더 있고, 직접 구현해보면서 이론보다는 피부로 와닿아서 그간 공부했던 것들이 바로바로 이해가 되는 경험이 많았습니다. 저는 구동되는 것을 봐야 하고 되는 것을 보면서 실전으로 느껴야 이해를 잘하는 편이기에 섹션 공부를 하면서 이해가 안 되었던 점이 프로젝트를 하면서 이해가 많이 갔습니다. 그렇기 때문에 저는 프로젝트에서 배운것이 너무 많고, 진짜 개발한다는 느낌을 들어서 시간 가는 줄 몰랐습니다. 그리고 온전히 개발만 하지 않고 많은 기획을 세워야 하고 깃허브에 기록을 남기는 등 개발자는 개발만 할..

    코드스테이츠 후기 (Section3 마무리)

    길고 긴 더닝 크루거 곡선 처럼 지나갔던 섹션 3였습니다. 그렇기에 이 글을 쓰는데 고민을 했는데, 후기, 회고글을 쓰는 것도 내가 뭐라고 이런 걸 쓰나 싶은 생각이 정말 많이 들지만 다른 분들께 경험을 드리거나 생각을 공유할 수 있는 부분으로 후기 글을 계속 쓰게 되었습니다. 아무래도 댓글은 없어도 후기글이 조회수가 가장 높더라고요. 그래서 조금이나마 도움이 되었으면 좋겠고, 모두 잘 되셨으면 좋겠습니다. 1. 기수이동 저는 section3에서 처음으로 기수 이동을 했습니다. 백엔드를 원하는 저에게는 결과적으로는 복습하게 되어 저에게 많은 득이 되었고, 프로젝트를 같이할 팀이 미리 생겼습니다. 저는 기수이동을 부끄럽게 생각하거나 안좋게 생각할 분이 있을 수도 있지만, 제가 생각하기엔 전혀 그럴 필요가 ..

    [알고리즘] 최대공약수, 최소공배수 (유클리드 호제법)

    1. 최대 공약수 최대공약수, 최대공배수를 사용하려면 소인수분해를 사용해야 합니다. 하지만 숫자가 크면 클수록 소인수분해의 횟수는 점점 증가하기 때문에 유클리드 호제법을 사용하면 시간복잡도는 단축이 됩니다. 유클리드 호제법은 명시적으로 기술된 가장 오래된 알고리즘으로, 무려 기원전 300년에 쓰여졌다고 합니다. 여기서 호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타냅니다. 일반적으로 최대공약수를 구하는 가장 쉬운 방법은 2부터 모든 정수로 나누어 보는 방법이 있을 것 같은데 이의 경우 모든 정수를 나눠야 하므로 시간 복잡도는 O(N)이 됩니다. 유클리드 호제법을 사용한다면 때 a % b이 0이 될 때까지 반복을 해주기 때문에 시간 복잡도를 O(Log N)으로 줄..

    [HTTP] Status Code / Request Methods 정리

    1. HTTP/2 순서 HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 입니다. HTTP/2 순서 1. TCP connection을 통하여 Client와 Sever 연결 확인 2. Client에서 request(요청)하여 GET(request메소드)을 통한 URL(정보를 받기위한 경로), headers(정보)으로 서버에 요청 3. Sever에서 response(응답) 통하여 status code와 관련된 파일을 보낸다. 4. TCP connection이 닫힌다. 2. HTTP Status Code 정리 참고 자료 HTTP 상태 코드 - HTTP | MDN HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답..

    [배포] 자동화

    서비스가 규모가 복잡해지고 커질수록, 서비스를 배포하는 과정이 복잡해지고 소요되는 시간이 늘어나게 됩니다. 서비스의 변경 사항이 생길 때마다 배포 과정을 매번 수동으로 진행한다면, 배포 과정에 많은 시간을 허비해야 할 것입니다. 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻합니다. 먼저 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됩니다. 휴먼 에러(Human Error)를 방지할 수 있습니다. 여기서 휴먼 에러란 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수를 뜻합니다. 그전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것이 휴먼 에러의 예로 볼 수 있습니다. 배포 자동화를 통해 전체 배포..

    [배포] Docker 의미

    도커(Docker)는 리눅스 컨테이너(Linux Container) 기술을 기반으로 하는 오픈 소스 서비스입니다. 도커를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 격리화하여 관리합니다. Linux Container Linux Container는 Linux 기반의 기술 중 하나로, 필요한 라이브러리와 애플리케이션을 모아서 마치 별도의 서버처럼 구성한 것을 말합니다. 컨테이너를 이루는 네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독립적으로 소유하고 있습니다. (프로세스, 네트워크, 파일시스템의 구획화) Docker 의 문제 해결 1. 환경 표준화 대표적인 운영 체제(OS)는 Linux, Windows, MacOS로 구분할 수 있습니다. 그리고 엔지니어는 자신이 개발하는..

    [Git] 브랜치 명령어 정리

    새로운 브랜치 생성 $ git branch 새로운 브랜치 이름 새로운 브랜치 생성 후 해당 브랜치로 전환 $ git switch -c 새로운 브랜치 이름 $ git checkout -b 새로운 브랜치 이름 브랜치 목록 확인 $ git branch 브랜치 목록과 각 브랜치의 최근 커밋 확인 $ git branch -v 브랜치 삭제 $ git branch -d 삭제할 브랜치 이름 $ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법입니다. 브랜치 전환 $ git switch 브랜치 이름 $ git checkout 브랜치 이름 브랜치 병합 master 브랜치로 dev 브랜치를 병합할 때 (master ← dev) $ git checkout master $ git merge de..