알고리즘, 자료구조/프로그래머스
-
[Javascript/Python] 프로그래머스 - N개의 최소공배수알고리즘, 자료구조/프로그래머스 2023. 5. 5. 14:19
문제: https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제요약 n개의 숫자를 담은 배열이 주어졌을 때, 원소들의 최소 공배수를 반환하여라 배열의 길이는 1 이상, 15 이하이다. 배열의 원소는 100 이하의 자연수이다. 첫 번째로 접근한 방식은, 배열에 속한 숫자들 중 제일 큰 수의 배수를 구하고 해당 값이 나머지 숫자들로 나누어 떨어지는지 확인했다. 아래는 이 방식을 자바스크립트로 작성한 코드이다. 풀이과정 function solution(..
-
[Javascript] 프로그래머스 - 피로도알고리즘, 자료구조/프로그래머스 2023. 4. 16. 16:22
문제: https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제요약 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타낸다. 유저의 현재 피로도 k와 각 던전별 "최소 필요 피로도", "소모 피로도"가 담긴 2차원 배열 dung..
-
[Javascript] 프로그래머스 - 올바른 괄호알고리즘, 자료구조/프로그래머스 2022. 9. 20. 01:02
문제: https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제요약 문자열 s가 바르게 짝지은 괄호인 경우 true, 아니면 false를 반환해라. 바르게 짝지은 괄호는 '(' 문자로 열렸을 때 ')'로 닫힌다. 문자열 s의 길이는 1 이상 100,000 이하다. 풀이과정 function solution(s){ if (s[0] === ')') { return false; }; let stack = []; for ..
-
[Javascript] 프로그래머스 - 위장알고리즘, 자료구조/프로그래머스 2022. 9. 19. 22:22
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=javascript# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제요약 스파이는 위장을 위해 매일 다른 옷을 조합하여 입어야 한다. 서로 다른 옷의 조합의 수를 구하여라. 스파이는 하루에 최소 1개 이상의 의상을 입는다. clothes는 2차원 배열이며, 원소는 [의상의 이름, 의상의 종류]로 구성된다. 스파이가 가진 의상의 수는 1개 이상 30개 이하이며, 의상의 이름은 고유하다. 풀이과정 function sol..
-
[Javascript] 프로그래머스 디스크 컨트롤러알고리즘, 자료구조/프로그래머스 2021. 3. 24. 15:01
문제 programmers.co.kr/learn/courses/30/lessons/42627# 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr '하드디스크가 작업을 수행하고 있지 않을 때에는 먼저 요청이 들어온 작업부터 처리합니다.'라는 제한 사항이 이 문제를 푸는데 핵심이라고 생각한다. 요청 시점이 빠른 순서대로 작업을 정렬할 것 다른 작업을 처리하느라 이미 요청 시점을 지나버린 경우, 해당 작업은 waitQueue에 적재할 것 waitQueue에 있는 작업들을 처리할 때 소요 시간이 작은 작업부터 처..
-
프로그래머스 알고리즘 복습하기알고리즘, 자료구조/프로그래머스 2020. 8. 4. 17:17
최적해를 구해야 되는 문제, 완전 탐색을 해야 되는 문제는 개인적으로 어려워하는 유형이라 이미 풀어봤던 문제일지라도 다시 풀어보면서 복습해야 될 것 같다. 틈틈이 업데이트하자! 앞으로는 github에 업데이트하기: https://github.com/jaemin-jeong/algorithm-programmers jaemin-jeong/algorithm-programmers Programmers algorithm training : https://programmers.co.kr/ - jaemin-jeong/algorithm-programmers github.com 완전 탐색, DFS, BFS 1. 타겟 넘버 https://programmers.co.kr/learn/courses/30/lessons/43165..
-
[Javascript] 프로그래머스 보석 쇼핑알고리즘, 자료구조/프로그래머스 2020. 7. 10. 23:27
문제 https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 풀이 과정 결론부터 말하면 이 문제는 단순 이중 for문으로 해결할 수 없다. 만약 이중 for문으로 해결하려고 한다면 정확성은 다 통과되지만 효율성에서 시간 초과될 것이다. 맨 처음 내가 작성한 코드는 아래와 같다. function solution(gems) { let result = [], minLen = 100000; let unique = [...new Set(gems)]; let gemLen = ..
-
[Javascript] 프로그래머스 큰 수 만들기알고리즘, 자료구조/프로그래머스 2020. 7. 3. 11:44
문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 어떤 숫자에서 k개 만큼의 숫자가 제거되었을 때 만들 수 있는 가장 큰 수를 구해야되는 문제이다. Greedy 알고리즘을 사용해 문제를 풀었고, 여기서 Greedy 알고리즘이란 매 순간 최선이라 판단되는 선택을 하면 가장 좋은 방법으로 문제를 해결할 수 있다라고 가정하는 아이디어에서 나온 것이다. 즉 미래는 생각하지 않고 당장 눈 앞에 닥친 문제만 생각하면 되는 것이다. 물론 이 방법으로 모든 문제가 풀리는 것은 아니지만 계산 시간이 적게 걸린다는 장점이 있기 때문에, Greedy 알고리즘으로 풀 수 있는 문제라면 이를 사용해 문제를..