백준 4358 < 생태학 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 📍알고리즘 분류 - 자료 구조 - 문자열 - 해시를 사용한 집합과 맵 - 트리를 사용한 집합과 맵 📍문제 풀이 - 예를 들어 어떤 숲에 있는 나무 종 문자열들이 일렬로 주어지는데, 전체에서 몇 퍼센트를 차지하는지 출력하면 된다 📍의사 코드 - 빈 객체를 만들고 주어진 문자열이 존재하면 기존 갯수 +1, 없으면 1 을 밸류로 할당하는 반복문을 실행한다 - 객체가 완성되면 객체..
백준 9251 < LCS > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 📍알고리즘 분류 - 다이나믹 프로그래밍 - 문자열 📍문제 풀이 - 다이나믹 프로그래밍(DP) 관련해서 유명한 문제 - X, Y 두 수열이 주어졌을 때, 두 수열의 최장 공통 부분 수열을 구해보자 예시) LCS(X,Y) = B C B A _ _ _ _ A B C B D A B _ _ _ _ B D C A B A - 단순 무식하게 브루트 포스 ..
백준 20291 < 파일 정리 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 📍알고리즘 분류 - 자료구조 - 문자열 - 정렬 - 해시를 사용한 집합과 맵 - 파싱 📍문제 풀이 - 파일 명에서 확장자를 골라 몇개가 있는지 갯수와 함께 출력 📍의사 코드 1. 주어진 데이터를 순회하며 . 으로 split 2. 해시 맵에 확장자가 있으면 +1, 없으면 1 3. 마지막에 완성된 객체를 순회하며 형식에 맞게 출 📍코드 (JavaScript) const [in1, ...in2] ..
백준 15686 < 치킨 배달 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 📍알고리즘 분류 - 구현 - 브루트포스 - 백트래킹 📍문제 풀이 - N * N 크기의 좌표 평면에서 2인 좌표가 최소 M개, 최대 N * N - 1 개, 1 도 몇 개 주어진다. - 1인 좌표를 모두 순회하면서 2인 좌표까지의 맨해튼 거리의 총 합이 최소가 되는 것을 도출하면 된다. - 2인 좌표값이 있는 배열을 백트래킹해나가야 하고, 순서는 상관없다 (조합) -..
백준 6603 < 로또 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 📍알고리즘 분류 - 수학 - 조합론 - 백트래킹 - 재귀 📍문제 풀이 - 주어진 수들의 집합에서 6개를 뽑는 경우의 수를 구하자 (조합) - 백트래킹으로 조합을 구현할 수 있다 - 테스트 케이스 그룹마다 줄바꿈으로 구분해줘야 한다 📍코드 (JavaScript) const input = require('fs') .readFileSync('/dev/stdin') .toStrin..
백준 16165 < 걸그룹 마스터 준석이 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/16165 16165번: 걸그룹 마스터 준석이 정우는 소문난 걸그룹 덕후이다. 정우의 친구 준석이도 걸그룹을 좋아하지만 이름을 잘 외우지 못한다는 문제가 있었다. 정우는 친구를 위해 걸그룹 개인과 팀의 이름을 검색하여 외우게 하는 www.acmicpc.net 📍알고리즘 분류 - 자료구조 - 해시를 사용한 집합과 맵 (해시 맵 또는 해시 테이블) 📍문제 풀이 - 주어지는 인풋 값을 어떤 형태로 저장할까? 고민이 필요 - 팀 멤버가 주어지면 그룹 이름을 출력해야 하고, 그룹 이름이 주어지면, 팀 전체 멤버를 출력해야 한다. - { 그룹 이름: [ 팀 멤버1, ... ] } 형태의 해시 맵으로 저장하면 좋을 것 같다. 📍코드 (JavaScr..
프로그래머스 < 기사단원의 무기 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/136798 📍알고리즘 분류 - 수학 - 구현 📍문제 풀이 1 ~ N까지 각 자연수의 모든 약수의 갯수를 빠르게 구하는 문제 약수의 갯수를 빠르게 구하려면, 제곱근을 사용하면 된다 예를 들어, 100의 약수를 구한다고 생각해보면, 100의 제곱근은 10이다. 전체 약수는 1, 2, 4, 5, 10, 20, 25, 50, 100 인데 1, 2, 4, 5, 10 까지만 구해도 나머지 약수를 계산할 수 있다 이를 잘 구현하면 된다 📍코드 (JavaScript) function solution(number, limit, power) { const answer = [1]; // 1의 약수는 1이므로..