프로그래머스 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..

    [프로그래머스, 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..