programmers lv4
[프로그래머스, 12984] [level 4] 지형 편집 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12984# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 63.4 MB, 시간: 80.51 ms사용 알고리즘: 구현 같은 층을 가진 칸이 몇 개가 있는지 구하여,층을 기준으로 오름차순 정렬한다. 가장 낮은 층부터 가장 높은 층까지 층을 높여가며해당 층을 만들기 위해 쌓아야 하는 블럭 수와 제거해야 하는 블럭 수를 계산해 준다.답과 현재 비용을 비교하여 더 작은 값을 답에 저장해 준다. 원래 같은 층을 가진 칸이 몇 개가 있는지 구하기 위해TreeM..
[프로그래머스, 42894] 블록 게임 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42894 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 74.1 MB, 시간: 0.90 ms사용 알고리즘: 구현 먼저 블록의 타입 12개의 모양을 위 -> 아래, 왼쪽 -> 오른쪽 순으로 blocks 배열에 정보를 담는다.그리고 처음 발견한 블록에 대해 그 블록이 어떤 타입인지 구할 수 있도록 한다. 또한, 1-1, 1-2, 2-1번 등의 블록은 구조 상 절대 검은 블록을 채워 직사각형 모양을 만들 수 없다.(위에서부터 밑으로 검은 블럭을 떨어뜨려..
[프로그래머스, 12983] 단어 퍼즐 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12983 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 54.3 MB, 시간: 45.78 ms사용 알고리즘: BFS 만들고자 하는 문자열을 char 배열로 바꾸고,0번 인덱스부터 사용할 수 있는 단어 조각을 찾는다. 사용할 수 있는 단어 조각이 있다면,해당 단어 조각을 사용했을 때의 길이(다음으로 확인해주어야 하는 인덱스)와사용한 단어 조각 개수를 배열에 담아이어서 붙일 단어 조각을 찾을 대기열인 큐에 넣어준다. 단, n개의 단어 조각 조합으로 i..
[프로그래머스, 131117] 5월 식품들의 총매출 조회하기 (mysql)
https://school.programmers.co.kr/learn/courses/30/lessons/131117 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT fp.product_id, fp.product_name, SUM(fo.amount) * fp.price AS total_salesFROM food_product fp JOIN food_order fo ON fp.product_id = fo.product_idWHERE fo.produce_date BETWEEN '2022-05-01' AND '2022-05-31'GROUP BY fp.pro..
[프로그래머스, 60060] 가사 검색 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/60060# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 79.8 MB, 시간: 42.17 ms사용 알고리즘: 이분탐색 단어들을 문자 하나하나 트리 형태로 저장한다.앞에서부터 뒤로 연결한 트리와 뒤에서부터 앞으로 연결한 트리를 만든다.만약 접두사에 와일드카드가 있다면 뒤에서부터 만든 트리로 단어를 찾고.접미사에 와일드카드가 있다면 앞에서부터 만든 트리로 단어를 찾는다.import java.util.*;class Solution { st..
[프로그래머스, 43236] 징검다리 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/43236 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 79.8 MB, 시간: 42.17 ms사용 알고리즘: 이분탐색 0 ~ distance 범위에서 이분탐색하며(m)출발지점과 도착지점을 포함한 모든 바위 사이의 거리가 m 이상이 되도록 검사한다.m보다 가까운 거리의 바위를 발견했을 때, 아직 제거할 수 있는 바위 개수가 남았다면 제거하고아니라면 m 크기를 줄여 다시 검사한다.m보다 가까운 거리의 바위를 발견하지 못했다면(발견했더라도 모두 제거할 ..
[프로그래머스, 49995] 쿠키 구입 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/49995 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 60.4 MB, 시간: 34.83 ms사용 알고리즘: 누적 합, 자료구조 첫째 아들의 바구니 범위를 정했을 때, 해당 범위 내의 과자 수를 한 번에 구하기 위해 누적합을 sum 배열에 저장한다.또한 첫째 아들의 과자 수가 정해졌을 때, 같은 과자 수를 가지는 범위가 있는지 한 번에 구하기 위해 누적합을 HashSet에 저장해 둔다. 2중 for문으로 첫째 아들의 바구니 범위를 정하고, sum..
[프로그래머스, 17685] [3차] 자동완성 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/17685 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 302 MB, 시간: 233.63 ms사용 알고리즘: 트리 각 단어의 문자들을 하나의 노드로 트리 형태로 만든다.단어 "go"를 만들기 위해서 root -> 'g' -> 'o' 형태로 트리를 만든다.단어 "gone"을 만들기 위해서 "go"를 만들며 이미 생성된 노드를 타고 root -> 'g' -> 'o'까지 이동한다.이어서 이동하며 'o' -> 'n' -> 'e'를 만든다.마찬가지로 "gu..
[프로그래머스, 12929] 올바른 괄호의 갯수 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12929 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 93.6 MB, 시간: 26.49 ms사용 알고리즘: 백트래킹, 완전 탐색 처음엔 괄호 모양에 따라 dp로 풀려고 했는데 예외가 너무 많은 것 같아서 포기n의 최대가 14라 $2^{14}$ 밖에 걸리지 않으므로 그냥 완전 탐색으로 풀었다.class Solution { static int n; static int answer; public int solution(i..
[프로그래머스, 64063] 호텔 방 배정 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 149 MB, 시간: 369.50 ms사용 알고리즘: 구현 map에 방 번호를 key로, key번 방을 선택했을 경우 배정해야 하는 방 번호를 value로 저장한다.key에 해당하는 값이 map에 없다면 아직 key번 방을 배정한 적이 없다고 간주하고 key번 방에 배정을 한 뒤,다음 방 번호인 key + 1을 value로 저장한다.만약 key가 map에 있다면, 이미 key번 방에 배정된 손..