프로그래머스 < 요격 시스템 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/181188 📍알고리즘 분류 - 그리디 📍문제 풀이 [시작 좌표, 종료 좌표] 가 배열로 주어진다 const targets = [ [4, 5], [4, 8], [10, 14], [11, 13], [5, 12], [3, 7], [1, 4], ]; 이 좌표들을 선으로 그었을 때, 모든 수평선을 수직으로 가로지르는데 필요한 최소한의 수직선의 갯수를 구하면 된다. 그림으로 나타내면, 아래처럼 표현할 수 있는데, 겹치지 않는 수평선이 총 3개 이므로, 최소 3개의 수직선이 필요하다. 겹치지 않는 수평선인지 아닌지를 빠르게 파악하려면, 모든 좌표들을 종료지점을 기준으로 오름차순 정렬한 후, 순서대로 ..
프로그래머스 < 개인정보 수집 유효기간 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150370 📍알고리즘 분류 - 구현 📍문제 풀이 - 약관 A, B, C 에 따라 각각 유효 개월 수가 자연수로 주어진다 - 최초 개인정보 수집 일자가 2021.05.02 처럼 문자열로 주어지고, 어떤 약관 종류인지 주어진다 - 오늘 날짜가 2021.05.02 처럼 문자열로 주어진다 이 때, 각 개인정보 수집 일자에 대해서, 약관의 개월 수에 따라 오늘 시점에서 파기해야 할 수집 일자 번호를 반환한다 1. 최초 개인정보 수집일자에다 유효 개월 수를 더해 최대 보유 가능 일자를 구한다 2. 최대 보유 가능 일자가 오늘 날짜보다 작으면 파기해야 하므로 결과에 추가한다 주의할 점 오늘은 2022..
프로그래머스 < 공원 산책 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/172928 📍알고리즘 분류 - 구현 📍문제 풀이 N * M 크기의 2차원 배열 park가 주어진다. 이차원 배열은 하나의 S, 여러개의 O, X로 구성되어 있다 - S : 시작 좌표 - O : 이동 가능한 좌표 - X : 장애물 (이동 불가) 좌표 그리고 "E 2", "N 1" 처럼, 동서남북 방향과 이동거리가 원소인 배열 routes가 주어진다 routes 를 순회하며, route의 이동 결과가 N * M을 넘지 않고, 장애물을 만나지않을 경우에만 좌표를 움직인다 그리고 최종 결과를 출력한다 📍코드 (JavaScript) const park = ["OSO", "OOO", "OXO", "..
프로그래머스 < 삼총사 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131705 📍알고리즘 분류 - 백트래킹 📍문제 풀이 - 중복된 수가 있을 수 있는 정수 배열이 주어진다. 정수 배열에서 3개의 숫자를 뽑아서 (조합) 합이 0이 되는 경우의 수를 구하라 백트래킹을 이용해서 조합을 구현할 수 있다 📍코드 (JavaScript) function solution(number) { const chosenNums = []; // 뽑힌 숫자들 (조합) const isUsed = []; // 중복을 막기 위해 사용됐는지 확인할 배열 let answer = 0; // 가짓수 // 백트래킹 function recursive(depth, start) { if (depth ..
프로그래머스 < 달리기 경주 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/178871 📍알고리즘 분류 - 구현 📍문제 풀이 - 달리기 경주중인 상황에서, 현재 선수들의 이름이 순위 순서로 배열로 주어진다 -> string[] - 어떤 선수가 1번 추월에 성공하면, 그 선수의 이름을 추월한 순으로 배열로 저장한다 -> string[] 추월 기록 배열을 순회하며 현재 순위별 선수 이름 배열을 업데이트하고 출력하라 단순하게 swap 함수를 만들어서 배열을 직접 조절했는데, 시간 초과가 발생했다. 시간 복잡도가 O(N^2)가 되는데다, 배열에서 원소를 움직이는 작업은 계산 비용이 크기 때문인 듯 하다 어떻게 할까.. 고민하다가 하나의 객체만 활용해서 시간을 줄이려고 해..
프로그래머스 < 기사단원의 무기 > 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이므로..
[프로그래머스] SQL 코딩테스트 연습 03. 우유와 요거트가 담긴 장바구니
·
✏️ Study/MySQL
데이터셋 확인은 이전글 참조 2021.08.09 - [SQL/MySQL] - [프로그래머스] SQL 코딩테스트 연습 01. DB 확인 [프로그래머스] SQL 코딩테스트 연습 01. DB 확인 프로그래머스 사이트에서 SQL 문제를 풀어볼 수 있다. https://programmers.co.kr/learn/challenges?tab=sql_practice_kit 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 프.. ggarden.tistory.com 이번에 풀 문제는 Summer/Winter Coding(2019)의 우유와 요거트가 담긴 장바구니 문제이다. 지난번 문제와 마찬가지로 Level 4에 랭크되어 있지만 구하고자 하는 것이 명확해서 체감난이도는 어렵..
[프로그래머스] SQL 코딩테스트 연습 02. 입양 시각 구하기(2)
·
✏️ Study/MySQL
데이터셋 확인은 이전글 참조 2021.08.09 - [SQL/MySQL] - [프로그래머스] SQL 코딩테스트 연습 01. DB 확인 [프로그래머스] SQL 코딩테스트 연습 01. DB 확인 프로그래머스 사이트에서 SQL 문제를 풀어볼 수 있다. https://programmers.co.kr/learn/challenges?tab=sql_practice_kit 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 프.. ggarden.tistory.com 프로그래머스 SQL 문제들 중에서 어려웠던 문제들을 리뷰 차원에서 다시 한 번 풀어본다. GROUP BY 카테고리의 입양 시각 구하기(2) 문제이다. 모든 문제들은 레벨1~4까지 있는데 다른 문제들과 다르게 레벨..