Algorithm/JavaScript
-
[PRO] 프로그래머스 Lv.2 가장 큰 수 (Javascript)
문제https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법주어진 숫자들을 배치했을 때 만들 수 있는 가장 큰 수를 계산해 문자열로 출력하는 문제입니다.숫자의 배치에 따른 대소를 비교해 배열을 정렬합니다.여기서 숫자를 문자로 / 문자를 숫자로 변환할 때 예외 케이스에 대해 생각해야 합니다. 풀이 과정가장 큰 수를 만들기 위해서 배열을 정렬합니다.정렬은 앞뒤 배치에 따른 숫자의 크기를 기준으로 합니다.숫자를 문자로 변환한 a, b에 대해서 ab보다 ba가 크면 b를 앞으로 보내는 방..
Algorithm/JavaScript 2024. 11. 12. 03:12 -
[PRO] 프로그래머스 Lv.2 2개 이하로 다른 비트 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법주어진 숫자를 2진수로 변환한 후, 비트를 최대 두 개까지 바꿨을 때 처음 숫자보다 큰 숫자 중 가장 작은 숫자를 구해야 합니다.10진수를 1씩 증가시키며 비트를 확인하는 대신에 2진수에서 규칙성을 찾아 풀이했습니다. 풀이 과정1. 2진수에서 가장 뒤에 있는 0을 찾아서 1로 바꿉니다. (가장 작은 수를 더하기)2. 바꿀 수 있는 1 중에서 가장 앞에 있는 1을 찾아서 0으로 바꿉니다. (가장 큰 수를 빼기) 예를 들어 주어진 숫자가 11인 경우를 가정해봅시다. 11을 2진법으로 표현하면 1011입니다. 과정 1. 2진수에서 가장 ..
Algorithm/JavaScript 2024. 11. 11. 02:47 -
[PRO] 프로그래머스 Lv.2 타겟 넘버 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법각 숫자를 더하거나 뺀 합계가 타겟 넘버가 되는 경우의 수를 계산하는 문제입니다.모든 경우의 수를 계산해야 하므로 DFS를 사용해 구현할 수 있습니다. 또한 불필요한 계산을 줄이기 위해 백트래킹을 사용합니다. 풀이 과정DFS를 사용해 주어진 숫자 배열 numbers를 순회하면서 합계를 계산합니다.계산 도중 더이상 타겟 넘버를 달성할 수 없을 때 합계를 중단하고 이전 단계로 되돌아가는 백트래킹을 사용합니다. 백트래킹을 사용하기 위해 초기 값을 numbers의 최소 합계, 즉 numbers의 모든 숫자가 마이너스일 때의 합계로 설정합..
Algorithm/JavaScript 2024. 11. 10. 03:04 -
[PRO] 프로그래머스 Lv.2 땅따먹기 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법 같은 열을 연속해서 밟지 않는 규칙을 따랐을 때 최대 합을 반환하는 문제입니다.특정 행까지의 최대 합을 계산할 때 직전 행의 최대 합을 사용할 수 있습니다. 즉 DP를 활용해 풀 수 있는 문제입니다. 풀이 과정주어진 배열 land를 처음부터 순회하며 해당 원소를 각 칸을 밟았을 때 나올 수 있는 최대 합으로 갱신합니다. 예를 들어 land[1][2]는 다음과 같이 계산해 갱신할 수 있습니다.1번째 행의 2번째 열을 밟을 때 최대 합 === 0번째 행에서 2번째 열을 제외한 나머지 칸 중 최댓값 + 현재 칸의 값 순회가 끝난 후 l..
Algorithm/JavaScript 2024. 11. 9. 00:17 -
[PRO] 프로그래머스 Lv.2 파일명 정렬 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법 파일명을 head, number, tail로 나누어 head가 같은 파일 명을 number 오름차순으로 정렬합니다.head, number, tail로 구분하기 위해 정규식을 사용합니다. 풀이 과정정규식을 사용해 파일 이름을 fileName, head, number로 구분합니다.이 때, 정규식의 형태는 다음과 같습니다.const [fileName, head, number] = files[i].match(/^(\D+)([0-9]+)(.*)$/); 위 정규식은 전체 파일명에서 fileName, head, number에 해당하는 문자열(..
Algorithm/JavaScript 2024. 11. 8. 23:25 -
[PRO] 프로그래머스 Lv.2 숫자 변환하기 (Javascript)
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해석접근 방법어떤 숫자를 다른 숫자로 변환하기 위해 드는 최소 연산 횟수를 계산합니다.최소 연산 횟수를 찾기 위해 BFS 혹은 DP를 사용할 수 있습니다. 풀이 과정1. BFS로 풀이 : 일부 시간 초과function solution(x, y, n) { let [nx, cnt] = [x, 0]; const q = [[nx, cnt]]; while (q.length) { [nx, cnt] = q.shift(); if (nx === y) return cnt; cnt++; if (nx..
Algorithm/JavaScript 2024. 11. 7. 01:46