최신 글
-
일기
2024년 후기(회고)
연간 회고를 작성해 본 적이 없어서인지 아니면 지나간 2024년을 제대로 마주할 용기가 없었던 것인지 회고를 작성하다가도 정신 차리고 보면 다른 주제를 생각하거나 프로젝트 리팩토링을 하는 등 다른 작업을 하고 있었다. 하지만 2024년 글또 활동의 마지막 글은 회고로 하는 게 좋을 것 같아서 그리고 회고를 해야 다가오는 2025년은 후회 없이 더 잘 맞이할 수 있을 것 같아서 다시 마음을 바로 잡았다. 2024년의 나는 여전히 회사 지원하기가 두렵다.공부를 하면 할수록 스스로 부족하다는 생각만 계속 들어서 이 정도로 지원해도 되는 걸까? 만약에 운이 정말 좋게 서류에서 붙는다고 해도 면접이 자신 없기에 아까운 기회만 날리는 게 아닐까라는 생각만 계속했다. 이렇게 지원하기가 두려우니 오히려 여러 스터디를 ..
-
알고리즘
백준) 10773 - 제로 JS
📌 문제 링크https://www.acmicpc.net/problem/10773📌 문제 탐색하기주어진 수를 하나씩 가지고 있다가 0이 나오면 가장 최근에 가진 수를 지운다.마지막에는 가지고 있는 수를 모두 더해라시간복잡도O(n)알고리즘 선택스택📌 코드 설계하기문제의 `input`을 개행으로 분리하고 숫자로 변환 후 구조분해할당합니다.`stack` 배열을 초기화합니다.`arr`배열을 순회합니다.가져온 값이 `0`이 아니면 `stack`에 값을 넣습니다.`0`이면 최근에 들어온 값을 지웁니다.`stack`에 있는 모든 값을 더합니다.📌 정답 코드//https://www.acmicpc.net/problem/10773export {};const fs = require("fs");const filePath..
-
알고리즘
백준) 1816 - 암호키 JS
📌 문제 링크https://www.acmicpc.net/problem/1816📌 문제 탐색하기주어진 수의 소인수가 1,000,000보다 크다면 적절한 비밀번호이다. 적절한 비밀번호라면 "YES"를 아니라면 "NO"를 출력해라시간복잡도O(n⋅k)알고리즘 선택완전탐색📌 코드 설계하기문제의 `input`을 개행으로 분리하여 BigInt로 변환하고 구조분해할당 합니다.`arr` 배열을 순회합니다.소수인지 약수인지 확인하기 위한 `isPrime` 변수를 초기화합니다.2부터 1,000,000까지 순회하면서 값이 나뉘는지 확인합니다.나뉜다면 "NO"를 출력하고 `isPrime`을 `false`로 할당하고 `break` 합니다.`isPrime`이 `true`라면 "YES"를 출력합니다.📌 시도 회차 수정 사항 ..
-
알고리즘
백준) 1157 - 단어 공부 JS
📌 문제 링크https://www.acmicpc.net/problem/1157📌 문제 탐색하기알파벳 대소문자 단어가 주어지면 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 출력여러 개가 존재하는 경우 `?`를 출력시간복잡도O(n)📌 코드 설계하기입력값을 모두 대문자로 변경합니다.대문자로 변경한 배열을 순회돌며 `Map` 객체에 key - value 형태로 각 알파벳과 개수를 저장합니다.가장 많이 나온 알파벳의 개수를 최대값으로 하고 동일한 최대값이 있으면 `-1`을 출력, 아니면 가장 많이 나온 알파벳을 출력합니다.📌 정답 코드const fs = require("fs");const filePath = process.platform === "linux" ? "/dev/stdin" : __dirn..
-
알고리즘
백준) 2417 - 정수 제곱근 JS
📌 문제 링크https://www.acmicpc.net/problem/2417📌 문제 탐색하기정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.시간복잡도O(log n)알고리즘 선택이분 탐색📌 코드 설계하기문제의 `input`을 `BigInt`를 이용해 숫자로 변환합니다.`left`와 `answer`는 `0n`으로 `right`는 `input`으로 초기화합니다.`left`가 `right`보다 클 때까지 반복문을 돕니다.`left`와 `right`를 더해서 `2n`으로 나눈 중간값인 `mid`를 초기화해줍니다.만약 `mid` 제곱근이 `input`보다 크거나 같다면 `answer`의 값은 `mid`값으로 할당하고 `right`는 `mid`에서 `1n`을 빼서 더 작은 수를 찾습니다...
-
알고리즘
백준) 1920 - 수 찾기 JS
📌 문제 링크https://www.acmicpc.net/problem/1920📌 문제 탐색하기N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성시간복잡도O(n+m)n은 nArr 의 요소 개수m은 mArr 의 요소 개수📌 코드 설계하기입력값을 구조 분해 할당해줍니다.대상이 되는 것을 숫자 타입으로 변환하여 `Set`객체에 넣어줍니다.순회해야하는 것도 숫자 타입으로 변환하여 배열로 만들어줍니다.순회할 배열을 돌며 `Set`에 해당 요소가 있는지 확인하며 있으면 `1` 을 없으면 `0` 을 출력합니다.📌 시도 회차 수정 사항 (Optional)1회차`includes()`를 사용했더니 시간초과로 틀렸다.const fs = requ..
-
알고리즘
백준) 1904 - 01타일 JS
📌 문제 링크https://www.acmicpc.net/problem/1904📌 문제 탐색하기타일이 00, 1이 있다 이때 만들 수 있는 모든 가짓수를 세서 15746으로 나눈 나머지를 출력해라시간복잡도O(n)알고리즘 선택DP📌 코드 설계하기문제의 `input`을 숫자로 변환합니다.`arr`에 값을 넣어 초기화해줍니다.문제 참조) N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다.`input`이 2보다 같거나 작다면 `arr[input]`의 값을 출력합니다.그렇지 않다면 `arr[i] = (arr[i - 1] + arr[i - 2]) % 15746;`으로 `arr`에 값을 할당합니다.`arr[input]`으로 가짓수를 출력합니다.📌 시도 회차 수정 사항 (Optional..
-
알고리즘
백준) 2747 - 피보나치 수 JS
📌 문제 링크https://acmicpc.net/problem/2747📌 문제 탐색하기입력값의 피보나치 수를 출력하시오시간복잡도O(n)알고리즘 선택DP📌 코드 설계하기문제의 `input`을 숫자로 변환합니다.`input`의 값이 2보다 작을 때는 `input`을 출력합니다.`arr` 배열을 선언하고 `0, 1`의 값을 미리 넣어줍니다.문제 참조) 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다.`sum`을 초기화합니다.`input`까지 반복문을 돌며 피보나치 수를 구하여 출력합니다. 📌 시도 회차 수정 사항 (Optional)1회차`input`의 값이 0과 1일 경우를 `arr` 배열에 넣어줬다고 출력할 때도 알아서 나올 것이라고 착각해서 틀렸다.📌 정답 코드//https://acmi..