알고리즘, 자료구조
-
[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..
-
버블 정렬 알고리즘 (Bubble sort Algorithm)알고리즘, 자료구조/정리 2023. 3. 27. 13:48
틀린 내용을 발견하신 경우 말씀 부탁드립니다! 🙇 버블정렬 알고리즘은 서로 인접한 두 개의 값을 비교하여 정렬하는 방식이다. 오름차순 정렬이라고 가정했을 때, 1회전이 끝나면 가장 큰 값이 맨 뒤에 위치하게 되며 각 회전이 끝날 때마다 비교해야하는 값이 하나씩 감소한다. 주어진 배열에서 값을 교환(swap) 하기 때문에 제자리 정렬 알고리즘에 속한다. 값을 정렬할 때 발생하는 교환 작업(swap)이 복잡하기 때문에 단순한 알고리즘임에도 불구하고 잘 쓰이지 않는다. Pseudo code n개의 요소로 이루어진 (정렬되지 않은) 배열을 오름차순으로 정렬하는 경우, (1회전 차) 첫 번째 값과 두 번째 값을 비교한다. 작은 값은 첫 번째 인덱스에, 큰 값은 두 번째 인덱스에 놓는다. (1회전 차) 두 번째 값..
-
선택 정렬 알고리즘 (Selection sort Algorithm)알고리즘, 자료구조/정리 2023. 3. 18. 12:05
틀린 내용을 발견하신 경우 말씀 부탁드립니다! 🙇 선택 정렬 알고리즘은 제자리(in-placing) 알고리즘 중 하나로, 결과 값을 만들기 위해 별도의 추가적인 메모리를 사용하지 않고 입력 배열의 메모리만 사용하는 정렬 방법이다. 제자리(in-placing) 알고리즘은 일반적으로 입력 값이 출력 값으로 덮어씌워지며, 입력 값을 출력 값으로 교체하거나 요소들의 위치를 바꾸는 방식으로 출력 값을 반환한다. 선택정렬 시각화 참고 Pseudo code n개의 요소로 이루어진 (정렬되지 않은) 배열이 있을 경우, 첫 번째 ~ n번째까지 탐색하며 기준에 맞는 요소를 찾은 뒤, 첫 번째 자리와 위치를 변경한다. 두 번째 ~ n번째까지 탐색하며 기준에 맞는 요소를 찾은 뒤, 두 번째 자리와 위치를 변경한다. 세 번째 ..
-
퀵 정렬 알고리즘 (Quick sort Algorithm)알고리즘, 자료구조/정리 2023. 3. 14. 13:35
틀린 내용을 발견하신 경우 말씀 부탁드립니다! 🙇 퀵 정렬은 분할 정복(Divide and conquer) 전략 중 하나로 재귀적 알고리즘에 해당한다. 분할 정복 전략은 그대로 해결할 수 없는 문제를 작은 문제로 분리하고 결과를 모아 원래의 문제를 해결하는 전략이다. 분할 정복 전략으로 문제를 풀기 위해선 아래 단계를 거친다. ① 문제가 기본단계가 될 때까지 나눈다 (Divide) ② 기본 단계를 해결한다 (Conquer) ③ 기본 단계의 답을 통합해 가장 큰 문제(원래 문제)의 답을 도출한다 (Combine) 분할 정복 전략 예시 가로 14, 세로 6인 직사각형을 똑같은 크기의 정사각형으로 나누면 총 몇 개의 정사각형이 반환되는가? 정사각형은 최대한 크게 만들도록 한다. 1. 주어진 직사각형을 최대한 ..
-
[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..
-
[Python] Codility Lesson1 - BinaryGap알고리즘, 자료구조/Codility 2022. 9. 19. 01:20
문제: https://app.codility.com/programmers/lessons/1-iterations/binary_gap/ 풀이 def solution(N): result = 0 binData = format(N, 'b') gapList = [] for i, v in enumerate(binData): if v == '1': gapList.append(i) if len(gapList) result: result = tmp return result Javascript 풀이: https://..