알고리즘/Javascript 문제
-
[백준] 한국이 그릴울 땐 서버에 접속하지 - JavaScript알고리즘/Javascript 문제 2025. 4. 10. 02:21
오늘은 정규 표현식을 사용해서 문자열에 해당 패턴이 있는지 없는지 검사하는 비교적 쉬운 문제를 풀어본다. 이 문제는 정규표현식을 알고, 관련 생성자 함수와 메서드를 사용할 줄 아는지 물어보는 문제이다. 문제1. 입력파일의 개수 N알파벳 소문자와 별표 한 개로 이루어진 문자열 패턴파일 이름 N개2. 로직: 정규 표현식으로 문자열 치환하여 조건문 분기처리에 활용하기3. 출력: 패턴과 일치하면 "DA", 일치하지 않으면 "NE"크로아티아이어로 "DA" === "YES", "NE" === "NO" 제출 답안문제에서 주어지는 패턴은 ‘a*b’와 같은 일반 문자열로 제공된다. 이는 일반적인 와일드카드 패턴(*)을 포함하고 있다. 하지만 JavaScript의 정규 표현식에서는 ‘*’가 와일드카드가 아니라, 바로 앞의..
-
최대값, 최소값 - JavaScript알고리즘/Javascript 문제 2025. 4. 2. 23:39
오늘은 JS를 사용해서 최대값과 최소값을 구하는 문제를 풀어본다.문제는 프로그래머스의 161990번 바탕화면 정리이다. 문제: 바탕화면 정리1. 입력: 빈칸은 ".", 파일이 있는 칸은 "#"으로 표시한 배열wallpaper = [".#...", "..#..", "...#."] wallpaper[i][j]는 바탕화면에서 (i+1) 행, (j+1) 열에 해당하는 칸의 상태를 의미2. 로직: 드래그 한 거리 | rdx - lux | + | rdy - luy|가장 작은 row의 #은 lux를 결정가장 작은 col의 #은 luy을 결정가장 큰 row의 #은 rdx를 결정 → rdx + 1가장 큰 col의 #은 rdy를 결정 → rdy + 1rdx와 rdy가 1이 더해짐을 아래 그림을 통해 이해해야 한다. 3. ..
-
피보나치 수열 (Fibonacci Sequence) - JavaScript알고리즘/Javascript 문제 2025. 4. 2. 08:11
오늘은 피보나치 수열이 적용된 백준 문제를 풀어본다.백준 문제 14495번에 대한 정리이다. 문제: 피보나치 비스무리한 수입력: 자연수 n로직: n번째 피보나치 비스무리한 수열f(n) = f(n-1) + f(n-3)f(1) = f(2) = f(3) = 11, 1, 1, 2, 3, 4, 6, 9, 13, 19, ...출력: 자연수 result제출한 답안처음에는 재귀함수를 이용해서 풀었는데 시간 초과로 실패했다.// 시간 초과로 실패const input = ( process.platform === 'linux' ? require('fs').readFileSync('/dev/stdin').toString() : `10`).trim();// console.log(inputconst getFibonacci =..
-
소수 (Prime) - JavaScript알고리즘/Javascript 문제 2025. 4. 1. 01:26
코딩테스트 스터디에 들어갔다. 문제를 자주 푸는 습관을 만들어갈 수 있을 것 같다. 오늘은 JS를 활용해서 주어지는 두 수 사이의 소수를 구하는 함수를 이해한 바를 정리하고,백준 문제 1929번에 제출한 답안 기록한다. 소수 (Prime Number) 소수는 1보다 큰 자연수 중에서 1과 자기 자신만을 약수로 가지는 수를 의미한다.그렇기 때문에 아래와 같은 특징들을 갖는다.소수는 항상 두 개의 약수(1과 자신)만을 가진다.2를 제외하고는 모든 소수는 홀수이다.소수의 자연수 내에서 규칙적으로 나타나지 않으며, 분포가 불규칙적이고 개수는 무한하다.JS 구현입력값을 정렬하여 역순 입력도 대응 가능하다.소수를 판별하는 함수인 isPrime을 분리하여 구현하였다.범위 내 각 숫자에 대해 소수를 판별하여 배열에 저..
-
순열, 조합, 팩토리얼 - JavaScript알고리즘/Javascript 문제 2025. 3. 13. 21:59
알고리즘 문제를 풀때 재귀적으로 모든 경우의 수에 대해 접근할 때가 있다.이때 응용할 수 있는 기본적인 팩토리얼, 조합, 순열의 JavaScript 코드를 기록하고 공유한다.1. 팩토리얼 (Factorial)[네이버 사전]1 부터 n 개의 양의 정수를 모두 곱한 것을 n 계승(factorial)이라고 하고, n! 로 나타낸다.즉, n! = 1 x 2 x 3 x ... x (n-1) x n 이다.n! = n x (n-1)! 의 성질에서 n이 1일 때, 1 = 1 x 0!이 되므로 0! = 1로 약속한다. JS 구현재귀함수를 이해하는데 가장 기본적인 예제라고 할 수 있다.재귀함수와 반복문을 사용한 두 가지 방법으로 구현해 볼 수 있다.다음에 구현할 순열과 조합에서는 재귀함수를 사용하므로 재귀함수를 더 눈여겨..
-
[Softeer] Lv.2 바이러스 - JavaScript알고리즘/Javascript 문제 2025. 2. 27. 17:33
1. 문제N초 후 P배씩 증가하는 K마리의 바이러스의 수를 구하는 문제 2. 해설매우 큰 수에 대한 반복문과 BigInt 자료형을 알고 있는지 점검하는 문제(일반 원시 자료형으로 계산하면 틀린다.)입력값을 받아 처음부터 BigInt 자료형으로 변환하여 정밀도 손실 없이 정확한 계산을 수행해야 한다.Number 타입을 사용하는 경우 큰 수의 곱셈에서 오버플로우와 정밀도 손실 문제가 발생할 수 있다. 3. 해답const [k, p, n] = require('fs').readFileSync('/dev/stdin', 'utf8').trim().split(' ').map(e => BigInt(e));let tmp = k;for (let i = 0; i 4. 문제 출처https://softeer.ai/practi..
-
[Softeer] Lv.2 연탄의 크기 - JavaScript알고리즘/Javascript 문제 2025. 2. 27. 16:49
1. 문제(Lv.2) 연탄을 사용할 수 있는 집의 최대 수 구하기 2. 해설최대 나눌 수 있는 수 찾기- 2 ~ 100까지의 수로 input 요소들이 나누어지는 검사- input 배열의 요소 radius가 2 ~ 100 사이의 숫자 i로 나누어 떨어지면, count 값을 1 증가- 만약 count > maxCount 이라면, maxCount를 업데이트- 모든 for문에 끝난 이후 결과값 maxCount를 출력 3. 해답const fs = require('fs');const [n, data] = fs.readFileSync('/dev/stdin', 'utf8').trim().split('\n');const input = data.split(' ').map(Number);let maxAvail = 0;for..