프로그래머스(Java)/Level 2 (51) 썸네일형 리스트형 [프로그래머스] [3차] 압축 코드 힌트사전 초기화:처음에는 단일 문자(알파벳 A부터 Z까지)로 초기화된 사전을 사용합니다. 이 사전은 문자열을 인코딩하는 데 사용됩니다.문자열 탐색:주어진 문자열을 탐색하면서 가능한 한 많은 문자들을 포함한 단어를 사전에서 찾습니다. 현재 문자부터 시작하여 다음 문자를 추가하면서 사전에 있는지 확인합니다.단어 추가 및 인덱스 기록:찾은 단어가 사전에 존재하지 않으면, 현재 단어의 인덱스를 결과 리스트에 추가합니다. 그 후, 다음 문자를 추가하여 새로운 단어를 사전에 추가합니다.문자열 인코딩:현재 탐색 위치가 문자열의 끝에 도달할 때까지 위의 과정을 반복하여 모든 단어를 인코딩합니다.결과 배열 변환:최종적으로 저장된 인덱스들을 배열로 변환하여 반환합니다. 사전 초기화 코드String[] initialW.. [프로그래머스] k진수에서 소수 개수 구하기 코드 힌트진법 변환:주어진 수를 k진법으로 변환해야 합니다. 변환 과정에서는 n을 k로 나눈 나머지를 문자열에 계속 추가하고, n을 k로 나누는 과정을 반복합니다. n이 k보다 작아지면 마지막 몫을 추가하고, 최종 문자열을 reverse하여 반환합니다.조건에 맞는 소수 찾기:문제의 핵심은 진법 변환 후 나온 숫자들 중에서 소수를 찾는 것입니다. 이를 위해 변환된 문자열을 '0'을 기준으로 split() 하여 숫자 배열로 나눈 다음, 각 숫자가 소수인지 확인해야 합니다.소수 판별:각 숫자가 소수인지 확인하는 방법은 간단합니다. 숫자 1은 소수가 아니므로 바로 제외하고, 2부터 해당 숫자의 제곱근까지의 수로 나누어지지 않는지 확인합니다. 나누어지는 숫자가 없으면 소수입니다.진법 변환 후 소수 개수 계산:입력.. [프로그래머스] 다리를 지나는 트럭 코드 힌트트럭 객체 사용하기Truck 클래스를 사용해 각 트럭의 무게와 다리에서 남은 이동 거리를 관리합니다. 이 클래스를 통해 트럭이 다리에서 언제 빠져나가는지를 계산할 수 있습니다.현재 다리 위의 트럭 상태 관리List를 사용하여 다리 위에 있는 트럭들을 순서대로 관리합니다. 리스트의 각 요소는 트럭 객체로, 이들이 다리를 이동하는 과정을 추적합니다.매 초마다 트럭들의 남은 이동 거리를 줄이며, 다리를 완전히 건넌 트럭은 리스트에서 제거하고, 다리 위의 현재 무게를 감소시킵니다.새로운 트럭 진입 처리새로운 트럭이 다리에 진입할 수 있는지 확인합니다. 다리의 현재 무게와 비교하여 트럭이 진입 가능한 경우 리스트에 추가하고, 다리 위의 트럭들을 이동시킵니다.만약 현재 대기 중인 트럭이 다리의 무게 제한을.. [프로그래머스] [3차] n진수 게임 코드 힌트10진수를 n진수로 변환하기주어진 숫자를 원하는 진수로 변환하려면, 나머지 연산을 반복하여 숫자를 변환해야 합니다.예를 들어, 16진수로 변환할 때 10 이상은 'A', 'B' 등으로 표시됩니다. 숫자를 변환한 후 결과는 역순으로 정리합니다.이 과정을 통해 0부터 순차적으로 모든 숫자를 n진수로 변환하게 됩니다.순번에 맞는 숫자 선택하기각 숫자를 변환한 후, 변환된 진법 숫자를 순서대로 확인하면서 자기 차례에 해당하는 숫자만 선택합니다.n진수로 변환된 숫자에서 각 자릿수는 차례대로 참가자에게 할당됩니다. 자신의 순번에 맞는 숫자를 찾아서 결과에 추가합니다.순번 관리플레이어의 차례는 순환적으로 돌아가므로, 순번을 % 연산으로 관리합니다.예를 들어, 참가자가 4명이라면 0, 1, 2, 3으로 순서가.. [프로그래머스] [1차] 뉴스 클러스터링 코드 힌트소문자 변환입력된 두 문자열을 모두 소문자로 변환하여 대소문자 구분 없이 비교할 수 있도록 합니다.다중집합 생성문자열을 2글자씩 잘라서 다중집합을 만듭니다.각 부분 문자열은 알파벳으로만 구성되어야 하며, 두 개의 문자로 구성된 경우에만 다중집합에 추가됩니다.예를 들어, "ab+c"라는 문자열이 있을 때, "ab"는 다중집합에 포함될 수 있지만 "b+"와 "+c"는 알파벳이 아니므로 다중집합에 포함되지 않습니다.이 다중집합들은 나중에 교집합과 합집합을 계산하는 데 사용됩니다.자카드 유사도 계산str1과 str2의 다중집합이 모두 비어 있을 때, 두 문자열은 완전히 유사하다고 간주하므로 유사도는 1로 간주되어 65536을 반환합니다.교집합과 합집합의 크기를 구한 후, 교집합 크기를 합집합 크기로 나.. [프로그래머스] 피로도 코드 힌트문제 이해:주어진 k는 초기 체력이며, dungeons는 각 던전의 요구 체력과 체력 소모를 나타내는 2D 배열입니다.목표는 체력을 최대한 소모하지 않고 가능한 많은 던전을 탐험하는 것입니다. 각 던전은 체력 요구와 소모량을 가지고 있습니다.알고리즘 개요:DFS(깊이 우선 탐색)를 사용하여 모든 가능한 던전 탐험 조합을 탐색합니다.각 던전의 탐험 가능 여부를 체크하고, 탐험 후 체력을 갱신하며 재귀적으로 탐색을 진행합니다.최종적으로 탐험할 수 있는 던전의 최대 수를 반환합니다.세부 단계:DFS 탐색 초기화: dfs 함수를 호출하여 모든 가능한 탐험 조합을 시작합니다. 초기 체력과 던전 방문 여부를 초기화합니다.현재 탐험 상태 기록: 현재 탐험 가능한 던전의 수를 기록합니다. 이 값을 최대값으로 .. [프로그래머스] 튜플 코드 힌트문제 이해:주어진 문자열 s는 여러 집합들이 포함된 문자열이며, 이 집합들은 중복된 요소를 가질 수 있습니다. 이 문제의 목표는 집합들에서 요소를 추출하여 특정 순서로 배열을 구성하는 것입니다.집합들은 {}로 감싸져 있으며, 이를 파싱하고 각 집합의 길이를 기준으로 정렬한 후 요소들을 추출해야 합니다.세부 설명:먼저, 문자열 s를 파싱하여 집합들의 배열로 변환해야 합니다. 이를 위해 불필요한 문자를 제거하고, 문자열을 구분자로 분할합니다.집합들의 배열을 길이순으로 정렬합니다. 이렇게 하면, 작은 집합부터 순차적으로 큰 집합의 요소를 추출할 수 있습니다.Set 자료구조를 사용하여 이미 추가된 요소를 추적하며, 중복되지 않은 요소만 결과 배열에 추가합니다.알고리즘:문자열에서 처음과 끝의 불필요한 {.. [프로그래머스] [1차] 캐시 코드 힌트문제 이해:이 문제는 LRU (Least Recently Used) 캐시 알고리즘을 구현하는 것입니다. LRU 캐시는 가장 오랫동안 사용되지 않은 페이지(도시)를 교체하는 방식입니다.주어진 cities 배열을 순차적으로 처리하면서, 각 도시에 대한 참조 여부에 따라 실행 시간을 계산해야 합니다.LRU 캐시 설명:LRU 캐시는 한정된 크기의 메모리를 효율적으로 사용하기 위한 알고리즘입니다.캐시에 있는 항목 중 가장 오랫동안 사용되지 않은 항목을 교체합니다.캐시에 도시가 있으면 hit으로 간주하고 실행 시간에 1초를 더합니다.캐시에 도시가 없으면 miss로 간주하고 실행 시간에 5초를 더합니다.캐시 구현:저는 캐시를 List로 구현했습니다. 리스트의 인덱스가 낮을수록 오랫동안 참조되지 않은 도시입니.. 이전 1 2 3 4 5 6 7 다음