Daniel: The Dev Story
Daniel: The Dev Story
    • 홈
  • 분류 전체보기
    • 프로젝트
    • Spring
    • NodeJS
    • Basics
    • Git
    • DB
    • Algorithm
    • Error
    • Private
      • Database
      • Tip
  • 글쓰기
  • 관리자
  • myoskin

      [백준] 1920: 수 찾기 - JS (이분 탐색)

      목 차 문제 접근 방식 풀이 문제 N개의 정수 내에서 제공된 M개의 정수들이 존재하는지 확인하세요. 접근 방식 학습을 목적으로 하여 재귀 함수 방식을 선택하였다. 그리고 해당 문제는 정렬도 함께 사용하기 때문에 정렬을 배우지 않았다면 먼저 정렬이 되어있는 배열을 생성하여 시도해 본다. 먼저는 퀵 정렬을 사용하여 정렬을 하고, 탐색을 하는 것이다. 나는 아직 퀵정렬을 배우기 전 이기에 미리 정렬된 배열로 해보았다. 이 문제는 퀵서치 느낌으로 해결하려고 한다. 풀이 quickSearch 함수는 arr와 target을 인자로 받고 boolean 형태의 데이터를 반환한다. 먼저 탈출조건은 arr.length가 0일 때는 데이터를 찾지 못한것이기에 false를 반환한다. pivot을 설정해주는데 Math.flo..

      Algorithm 2023.09.02

      [백준] 4673: 셀프 넘버 - JS (브루트포스)

      목 차 문제 접근 방식 풀이 문제 n = 100) { const devided = devide(i); selfNums[(i + devided[0] + devided[1] + devided[2]) - 1] = true; } else if (i >= 10) { const devided = devide(i); selfNums[(i + devided[0] + devided[1]) - 1] = true; } else if (i

      Algorithm 2023.08.05

      [백준] 2748: 피보나치 수 2 - JS (재귀, DP)

      목 차 문제 접근 방식 풀이 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 접근 방식 이 문제는 대표적인 DP 문제이다. 그냥 재귀함수를 통해서 문제를 푼다면 시간이 초과되어 실패할 것이다. >> DP란? 백준에서 입력은 첫째 줄에 n이 주어진다. n은 90보다 작거..

      Algorithm 2023.07.30

      [Algorithm] 다이나믹 프로그래밍(DP) 개념 및 적용

      목 차 개요 DP를 사용하는 이유 DP 적용하기 DP 체감하기 개요 Dynamic Programmin(DP) 또는 동적 프로그래밍이라고도 하는데, DP는 복잡한 문제를 간단한 여러개의 문제로 나눠서 푸는 방식이다. DP는 작은 문제가 반복하여 발생하고 이에 대한 해답을 저장해두고 재사용 하는 특징이 있다. 이렇게 함으로써 계산 속도를 크게 향상시킬 수 있다. DP를 사용하는 이유 DP는 주로 다음 두 가지 속성을 가진 문제에 적용된다. 1. 중복되는 문제 해결: 대표적으로 피보나치 수열의 예시가 있는데, 이 피보나치 수열을 재귀함수로 풀어본다면 코드는 아래 코드와 비슷할 것이다. Fn 을 계산하기 위해서 F(n-1) 과 F(n-2)을 계산해야 하지만, 이들 역시 F(n-3)과 F(n-4)를 필요로 한다...

      Algorithm 2023.07.29

      [백준] 별찍기 1-8 문제풀이 - JS

      목 차 별찍기 1 별찍기 2 별찍기 3 별찍기 4 별찍기 5 별찍기 6 별찍기 7 별찍기 8 별찍기 1 Goal N번 째 줄에는 N개의 별이 찍혀야 한다. * ** *** **** ***** Design 그저 반복문을 통해 별이 추가되는 식으로 설계를 하고 구현을 해보았다. const input = 5; let result = ''; for(let i = 0; i < input ; i++) { result += '*'; console.log(result); }; 별찍기 2 Goal 별찍기 1과 같이 N 번째 줄에는 N개의 별을 찍는다. 하지만 이번엔 오른쪽 정렬을 한다. * ** *** **** ***** Design 바깥 for문은 줄을 바꾸는 반복문, 안쪽 for문에서는 별을 찍는 역할을 하는데, '..

      Algorithm 2023.07.13

      [알고리즘] 버블정렬 (Bubble Sort)

      목 차 버블정렬이란? 버블정렬 예시 버블정렬 설계 버블정렬 후기 버블정렬이란? 버블정렬 알고리즘은 인접한 두 개의 요소를 비교하고, 필요하다면 두 요소의 위치를 바꾸는 과정을 반복하여 전체 배열을 정렬하는 방식이다. 버블정렬 예시 숫자 5, 3, 8, 4, 2 가 요소로 들어있는 배열이 존재한다고 할 때. 이 배열을 버블정렬 알고리즘으로 정렬을 해보려고 한다. 1. 첫 번째 요소와 두 번째 요소를 비교한다. 만약 왼쪽의 요소가 더 크다면 두 요소의 자리를 바꾼다. 2. 두 번째 소요와 세 번째 요소를 비교한다. 만약 왼쪽의 요소가 더 크다면 두 요소의 자리를 바꾼다. 3. 세 번째 요소와 네 번째 요소를 비교한다. 4. 네 번째 요소와 다섯 번째 요소를 비교한다. 이렇게 여러번 반복을 하면 정렬이 된다...

      Algorithm 2023.07.12

      [Git] Blame, 파일 편집자 추적하는 방법 그리고 유용한 익스텐션 소개

      가끔 이거 누가 수정한건지 알아야 하는 때가 있는데 이 때 유용하게 사용할 수 있는 것이 blame이다. 기본적으로 아래 명령어를 작성하면 그 파일을 누가 언제 무엇을 수정했는지 알 수 있다. git blame 파일명 그리고 VScode 에서는 유용한 익스텐션을 제공하는데, GitLens이다. 사용하는 방법은 간단하다. 설치하게되면 오른쪽 위에 Git 로고 비슷한 아이콘이 생기는데 누르고 첫번째 옵션을 누르면 blame 창이 생긴다. 왼쪽에 언제 추가했는지, 그리고 마우스를 올리면 누가 했는지도 알 수 있다.

      Git 2023.06.29

      [Git] GitHub와 연결하여 서버에 파일 추가하기

      실행환경: Apple Macbook M2 Air 준비물: GitHub 계정, GitHub Repository 하나 새로 만들기 GitHub Clone 연결하려는 Repository에 들어가서 Code 버튼을 누른다. 그리고 HTTPS에 있는 URL을 복사한다. 다음과 같이 git clone URL붙여넣기를 하면 파일이 하나 추가된다.(보통은 레포지토리 이름으로 생성됨) cd 를 활용하여 해당 디렉토리로 이동한 뒤, 새로운 파일을 만들고 커밋을 하고 다음 명령어를 통해서 push를 해보자 git push 그러면 계정이나 username을 입력하라고 하고, 그 다음은 password를 입력하라고 하는데 2021년 8월 이후로 비밀번호 대신 토큰이나 SSH key를 사용해서 인증을 해야한다. 토큰이나 SSH ..

      Git 2023.06.27

      [Git] Restore, 그리고 reset 활용방법과 복구방법

      목 차 restore를 활용하여 파일 되돌리기 최신 commit 수정하기 Reset 실수로 지웠다면? Local history ⛔️ 로컬 저장소에서의 변경사항에 대해 작동하며, 원격 저장소에 반영되지 않은 변경사항들에 대해서만 사용하는 것을 권장한다. restore를 활용하여 파일 되돌리기 되돌리려는 파일이 staging area에 있을경우 아래 명령어를 작성 git restore --staged 파일_이름 되돌리려는 파일이 working directory에 있을경우 아래 명령어를 작성 git restore 파일_이름 ⚠️ 유의할 점은 staging area에서 restore를 사용하면 변경사항이 unstaged 상태가 되고 원래의 파일 내용이 유지된다는 것이다. 반면, working directory에..

      Git 2023.06.26

      [Git] Stash란 무엇이고 사용방법 알아보기

      stash 란? Stash는 현재 작업 디렉토리와 스테이징 영역의 변경사항 일시적으로 저장해 두는 기능이다. 이를 통해서 변경사항을 commit 하지 않고도 다른 작업을 진행 하거나 다른 branch로 작업할 수 있다. 요약하자면 아직 commit 하지 않은 변경사항을 일시적으로 저장해두는 "임시 저장 공간"이라고 할 수 있다. 이를 통해서 변경사항을 유지한 채로 다른 작업을 진행하거나 다른 branch로 전환할 수 있다. stash 사용방법 stash에 넣을거고, 메세지는 "my Directory" 이다. 라는 의미이다. git stash push -m "my Directory" tracking 되지 않은 파일도 stash에 넣고 싶다면 -u 옵션을 붙여주면 된다. git stash -u stash l..

      Git 2023.06.25

      [Git] rebase는 무엇이고 주의점과 사용방법

      목 차 rebase 사용방법 rebase 주의점 원하는 Commit만 Merge 하기 특정 commit 삭제 rebase는 내가 작업하는 branch가 파생된 master branch(또는 main)를 업데이트 하는 것이라고 생각하면 된다. 주의점이 있는데, 같은 branch에서 다른 개발자와 함께 작업하고 있거나, 서버에 history가 올라가 있다면 사용에 주의가 필요하다. 주의점은 여기서 따로 정리하지는 않겠다. rebase 사용방법 먼저 내가 작업하고 있는 branch로 이동하고, 다음 명령어를 실행해준다. git rebase 브랜치_이름 rebase --onto 이 옵션은 브랜치가 체이닝으로 파생되었을 때, 특정 브랜치를 다른 브랜치로 재연결 싶을 때 사용할 수 있다. 예를 들면, master ..

      Git 2023.06.25

      [Git] Merge 충돌, conflict 해결 방법

      Conflict 란? 두 Branch에서 같은 파일의 같은 줄을 다른 내용으로 수정을 했다면 Git이 에러를 내는 것이 conflict 이다. Conflict는 아래 사진과 같이 메세지가 나온다. 해결방법 Conflict가 발생한 파일을 들어가 보면 다음과 같이 > test(병합(merge) 하려는 브랜치) 표시가 보일 것이다. > 이 표시들을 지워주고, 코드만 남겨주고 저장하면 된다. 두 코드 모두 남겨주어도 괜찮고, 하나만 남겨주어도 괜찮다. VScode로 Conflict 해결하기 git config --global -e 명령어로 들어가서 다음 4줄을 추가해준다. [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $MERGED 그리고 다음에 ..

      Git 2023.06.25

      [OnlyForMe] Merge의 옵션과 중요한 컨셉, fast-forward merges

      보호되어 있는 글입니다.

      Git 2023.06.23

      [Git] Git Branch를 사용하는 이유와 사용방법

      목 차 Git Branch를 사용하는 이유 Branch 기본 사용 방법 Git Branch를 사용하는 이유 Branch를 사용하면 프로젝트에서 여러 독립적인 작업을 동시에 할 수 있다. 새로운 Branch를 만들게 되면 그 당시 master branch(또는 main branch)와 동일한 상태를 복사한다. 새로운 branch에서 작업을 하게되면 그 변경사항은 해당 브렌치에서만 반영되며, master branch 혹은 다른 branch에는 영향을 주지 않는다. 독립적으로 진행하던 작업이 완료되면 master branch(또는 main)와 merge(병합)할 수 있다. Branch 기본 사용 방법 현재 있는 branch들을 확인 git branch # 서버에 연결된 모든 브랜치들도 확인시켜줌 git bra..

      Git 2023.06.23

      [Git] Tag가 필용한 이유와 하는 방법

      목 차 Tag가 필요한 이유 Tag 하는 방법 태그하는법 특정커밋에 태그하는법 태그에 메모내용 더하기 Tag가 필요한 이유 history에 Commit이 많아지면 많아질수록 복잡해진다. Tag를 하는 이유는 특정 commit에 대한 참조점을 만들기 위함이다. Tag는 주로 새로운 릴리즈에 대한 참조점을 만들기 위해 사용된다. commit을 북마크 할 수 있는 것이다. (새로운 릴리즈 = 새로운 버전 공개) 릴리즈 할 때 그 버전을 태그를 많이 한다. 이 때 태그 하는 버전은 보통 semantic versioning을 많이 사용한다. 우리가 흔히 아는 x.x.x 형식이다. 이 것을 함으로 우리는 더 빠른 전환이 가능해진다. 궁금하면 찾아보자. Tag 하는 방법 태그를 하는 방법은 매우 간단하다. #태그하는..

      Git 2023.06.23

      [Git] Git log를 유용하게 활용하는 옵션들

      더보기: 목 차 더보기 목 차 한 줄로 간단하게 최근 N개의 commit만 출력 특정 제작자의 commit만 출력 특정 날짜를 기준으로 출력 Commit Message에 특정 문자가 포함된 commit 특정 파일에 대한 history 보기 시작하기 1. 한 줄로 간단하게 commit을 한 줄로 간단하게 보여준다. 보통은 해시코드 | Commit Message 형식으로 되어있다. Git --oneline 2. 최근 N개의 commit만 출력 N에는 숫자가 들어간다. 만약 5를 입력하면 최근 5개의 commit만 출력해준다. git log -N 3. 특정 제작자의 commit만 출력 제작자가 Daniel인 commit만 출력 git log --author="Daniel" 4. 특정 날짜를 기준으로 출력 Y..

      Git 2023.06.22

    12345678
    Daniel: The Dev Story

    찾기

    공지

    최근 글

    인기글

    최근 댓글

    캘린더

      8 / 2025
      일 월 화 수 목 금 토
      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 29 30
      31

    글 보관함

    태그

      git타입스크립트java백준코딩Algorithm알고리즘자바BOJMYSQL

    즐겨찾기

    방문자 수

    • Today
    • Yesterday
    • Total
    myoskin

    티스토리툴바