알고리즘 이야기/알고리즘 문제풀이10 [프로그래머스] JS알고리즘 - n^2 배열 자르기 오늘은 'n^2 배열 자르기' 알고리즘 문제를 자바스크립트로 해결하는 과정을 다뤄보겠습니다. 까다로워보이지만 2차원 배열의 규칙만 잘 찾아내면 오히려 쉽게 접근할 수 있는 문제입니다. 문제 설명 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지.. 알고리즘 이야기/알고리즘 문제풀이 2024. 1. 28. [프로그래머스] JS알고리즘 - 피로도 오늘은 프로그래머스 2단계 를 완전탐색으로 푸는 방법에 대한 내용을 포스팅해보려 합니다. 문제 설명 XX게임의 피로도 시스템과 던전 탐험 메커니즘을 이해하는 것이 이번 문제의 핵심입니다. 각 던전은 '최소 필요 피로도'와 '소모 피로도'를 가지고 있으며, 이를 통해 유저가 탐험할 수 있는 최대 던전 수를 계산해야 합니다. 문제 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하.. 알고리즘 이야기/알고리즘 문제풀이 2024. 1. 23. [프로그래머스] JS 알고리즘 - 귤 고르기 오늘은 프로그래머스에서 귤 고르기 문제를 풀었습니다. 다른 블로그를 보니 2단계치고는 쉬운 문제라고 하지만 그래도 나름 까다로운 편에 속하지 않았나 생각해요. 시간 복잡도를 줄이기 위해 많은 시도를 해보았던 것 같습니다. 문제 설명 [문제] 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크.. 알고리즘 이야기/알고리즘 문제풀이 2024. 1. 14. [알고리즘 강의]JS 알고리즘 - DFS 팩토리얼 최근 회사에서 메신저 프로그램을 열심히 개발하고 난 후, 다시 코딩 강의를 복습하기로 결정했습니다. 하지만 오랜만에 알고리즘 문제를 풀어보니, 생각보다 잘 풀리지 않는 것 같더군요. 처음엔 혼자서 문제를 풀지 못하고, 시작조차 못하는 문제들이 많아져서 자존심이 상했었습니다. 하지만, 그러한 자괴감을 느끼기보다는 여러 번 복습을 통해 익숙해지는 것도 좋은 학습 방법이라는 조언을 들었습니다. 그래서 안심하고 이 방식을 따르기로 했습니다. 공부에 정답은 없으니까요. 천재도 아니고, 안 풀리는 문제가 갑자기 풀리지 않습니다. 무엇이든 시도해보는 것이 중요하죠. 이 방법으로 알고리즘을 공부하는 것이 얼마나 효과적인지에 대한 후기는 나중에 한 번 포스팅해보고 싶습니다. 그래서 다시 기본을 다질 겸 풀어본 문제는 기.. 알고리즘 이야기/알고리즘 문제풀이 2024. 1. 13. JS 알고리즘 - DFS로 부분집합 구하기 DFS 이해하기 오늘의 자바스크립트 알고리즘을 풀던 중 잘 이해가 안가는 DFS를 결국 이해해서 블로그에 올려본다. 문제는 자연수 N이 주어지면 해당 자연수의 부분집합을 DFS로 구현하는 것이었고, 해답은 아래와 같다. DFS 해답 function solution(n) { let answer = []; let ch = Array.from({ length: n + 1 }, () => 0); console.log(ch) function DFS(L) { console.log(`n: ${n}, L: ${L}`) if (L === n + 1) { console.log(`if ${L} === ${n + 1}`) let tmp = ""; for (let i = 1; i 0) answer.push(tmp.trim()).. 알고리즘 이야기/알고리즘 문제풀이 2023. 11. 25. JS 알고리즘 - sort(), Math.max() 문제 오늘 푼 자바스크립트 알고리즘 문제는 어제 푼 것보다 더 어려운 것이었다. 문제는 아래와 같다. 졸업 선물 선생님은 올해 졸업하는 반 학생들에게 졸업선물을 주려고 합니다. 학생들에게 인터넷 쇼핑몰에서 각자 원하는 상품을 골라 그 상품의 가격과 배송비를 제출하라 고 했습니다. 선생님이 가지고 있는 예산은 한정되어 있습니다. 현재 예산으로 최대 몇 명의 학생에게 선물을 사줄 수 있는지 구하는 프로그램을 작성하세요. 선생님은 상품 하나를 50% 할인해서(반 가격) 살 수 있는 쿠폰을 가지고 있습니다. 배송비는 할인에 포함되지 않습니다. ▣ 입력설명 첫 번째 줄에 반 학생수 N(1 알고리즘 이야기/알고리즘 문제풀이 2023. 10. 9. JS 알고리즘 - parseInt, Math.sqrt(num), 소수(prime number) 개념 이해 오늘은 아래와 같은 문제를 풀었다. 해당 문제를 풀면서 기본기가 어서 잡혀야겠다는 생각을 했다. 문제 ### 뒤집은 소수 N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. ▣ 입력설명 첫 줄에 자연수의 개수 N(3 알고리즘 이야기/알고리즘 문제풀이 2023. 10. 8. JS 알고리즘 - 2차원 탐색 상하좌우 오늘 아래와 같은 2차원 배열 탐색 문제를 푸는데 너무 어려웠다. 문제는 이러하다. 문제 봉우리 지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 격자 판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고 가정한다. 만약 N=5 이고, 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개입니다. 0 0 0 0 0 0 0 0 5 3 7 2 3 0 0 3 7 1 6 1 0 0 7 2 5 3 4 0 0 4 3 6 4 1 0 0 8 7 3 5 2 0 0 0 0 0 0 0 0 ▣ 입력설명 첫 줄에 자연수 N이 주어진다.(1= 0 && ny < n && ar.. 알고리즘 이야기/알고리즘 문제풀이 2023. 10. 1. JS 알고리즘 - indexOf(), filter 아래와 같은 문제를 조금 더 세련되게 풀기 위해 indexOf와 filter의 인자값을 명확히 알 필요가 있었다. 오늘의 알고리즘 문제는 아래와 같다. 알고리즘 문제 중복단어제거 N개의 문자열이 입력되면 중복된 문자열은 제거하고 출력하는 프로그램을 작성하세요. 출력하는 문자열은 원래의 입력순서를 유지합니다. ▣ 입력설명 첫 줄에 자연수 N이 주어진다.(3 알고리즘 이야기/알고리즘 문제풀이 2023. 9. 30. JS 알고리즘 TIL - 가장 긴 문자열 오늘의 문제는 아래와 같다. 문제 N개의 문자열이 입력되면 그 중 가장 긴 문자열을 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 줄에 자연수 N이 주어진다.(3 알고리즘 이야기/알고리즘 문제풀이 2023. 9. 29. 이전 1 다음