프로그래머스(Java) (192) 썸네일형 리스트형 [프로그래머스] [1차] 뉴스 클러스터링 코드 힌트소문자 변환입력된 두 문자열을 모두 소문자로 변환하여 대소문자 구분 없이 비교할 수 있도록 합니다.다중집합 생성문자열을 2글자씩 잘라서 다중집합을 만듭니다.각 부분 문자열은 알파벳으로만 구성되어야 하며, 두 개의 문자로 구성된 경우에만 다중집합에 추가됩니다.예를 들어, "ab+c"라는 문자열이 있을 때, "ab"는 다중집합에 포함될 수 있지만 "b+"와 "+c"는 알파벳이 아니므로 다중집합에 포함되지 않습니다.이 다중집합들은 나중에 교집합과 합집합을 계산하는 데 사용됩니다.자카드 유사도 계산str1과 str2의 다중집합이 모두 비어 있을 때, 두 문자열은 완전히 유사하다고 간주하므로 유사도는 1로 간주되어 65536을 반환합니다.교집합과 합집합의 크기를 구한 후, 교집합 크기를 합집합 크기로 나.. [프로그래머스] 직사각형 넓이 구하기 코드 힌트좌표 분석주어진 점들의 좌표를 통해, 최소 x값 (x1)과 최대 x값 (x2), 최소 y값 (y1)과 최대 y값 (y2)을 찾습니다.x1, x2, y1, y2는 각각 사각형의 왼쪽, 오른쪽, 아래쪽, 위쪽 경계가 됩니다.사각형의 넓이 계산사각형의 넓이는 (x2 - x1)과 (y2 - y1)를 곱하여 구합니다.이 값은 좌표 배열에서 가장 큰 x좌표와 가장 작은 x좌표의 차이, 그리고 가장 큰 y좌표와 가장 작은 y좌표의 차이를 사용하여 사각형의 넓이를 계산하는 것입니다. 정답은 더보기 클릭더보기class Solution { public int solution(int[][] dots) { // 초기 값으로 최대값과 최소값을 설정 int x1 = Integer.MAX_V.. [프로그래머스] 컨트롤 제트 코드 힌트스택을 활용한 문제 해결:스택은 LIFO(Last In, First Out) 방식으로 작동하므로, 최근에 추가된 요소를 쉽게 제거할 수 있습니다. "Z"는 최근에 추가된 숫자를 제거하라는 의미이므로, 스택을 사용하여 이를 간단히 처리할 수 있습니다.숫자와 명령어 구분:문자열을 공백으로 나눈 후, 각 단어가 숫자인지 "Z"인지 구분하여 처리합니다. "Z"는 스택에서 마지막 숫자를 제거하고, 숫자는 스택에 추가합니다. 배열을 활용한 간단한 접근:배열을 사용하면 각 요소에 직접 접근하고 수정할 수 있으므로, "Z"가 있는 경우 간단히 이전 숫자를 "0"으로 변경하여 처리할 수 있습니다.공백으로 분할 후 처리:공백으로 문자열을 분할하여 각 요소를 배열로 변환한 후, "Z"에 따라 이전 요소를 변경하는 .. [프로그래머스] 한 번만 등장한 문자 코드 힌트알파벳 빈도수 카운트:문자열에 포함된 각 알파벳의 등장 횟수를 카운트해야 합니다. 이를 위해 int 배열을 사용하여 알파벳의 빈도수를 저장합니다.배열의 인덱스는 알파벳의 ASCII 코드에서 'a'를 뺀 값을 사용하여 각 알파벳을 구분합니다. 예를 들어, 'a'는 인덱스 0, 'b'는 인덱스 1, 'z'는 인덱스 25입니다.문자 빈도수 처리:문자열을 순회하면서 각 문자의 등장 횟수를 배열에 기록합니다. 배열의 값이 1인 경우 해당 문자는 문자열에서 유일하게 나타난 문자입니다.결과 문자열 생성:등장 횟수가 1인 문자를 찾으면, 이 문자를 결과 문자열에 추가합니다.StringBuilder를 사용하여 최종 결과 문자열을 효율적으로 구성합니다.문자와 인덱스 변환:배열의 인덱스를 문자로 변환하려면, cha.. [프로그래머스] 피로도 코드 힌트문제 이해:주어진 k는 초기 체력이며, dungeons는 각 던전의 요구 체력과 체력 소모를 나타내는 2D 배열입니다.목표는 체력을 최대한 소모하지 않고 가능한 많은 던전을 탐험하는 것입니다. 각 던전은 체력 요구와 소모량을 가지고 있습니다.알고리즘 개요:DFS(깊이 우선 탐색)를 사용하여 모든 가능한 던전 탐험 조합을 탐색합니다.각 던전의 탐험 가능 여부를 체크하고, 탐험 후 체력을 갱신하며 재귀적으로 탐색을 진행합니다.최종적으로 탐험할 수 있는 던전의 최대 수를 반환합니다.세부 단계:DFS 탐색 초기화: dfs 함수를 호출하여 모든 가능한 탐험 조합을 시작합니다. 초기 체력과 던전 방문 여부를 초기화합니다.현재 탐험 상태 기록: 현재 탐험 가능한 던전의 수를 기록합니다. 이 값을 최대값으로 .. [프로그래머스] 튜플 코드 힌트문제 이해:주어진 문자열 s는 여러 집합들이 포함된 문자열이며, 이 집합들은 중복된 요소를 가질 수 있습니다. 이 문제의 목표는 집합들에서 요소를 추출하여 특정 순서로 배열을 구성하는 것입니다.집합들은 {}로 감싸져 있으며, 이를 파싱하고 각 집합의 길이를 기준으로 정렬한 후 요소들을 추출해야 합니다.세부 설명:먼저, 문자열 s를 파싱하여 집합들의 배열로 변환해야 합니다. 이를 위해 불필요한 문자를 제거하고, 문자열을 구분자로 분할합니다.집합들의 배열을 길이순으로 정렬합니다. 이렇게 하면, 작은 집합부터 순차적으로 큰 집합의 요소를 추출할 수 있습니다.Set 자료구조를 사용하여 이미 추가된 요소를 추적하며, 중복되지 않은 요소만 결과 배열에 추가합니다.알고리즘:문자열에서 처음과 끝의 불필요한 {.. [프로그래머스] [1차] 캐시 코드 힌트문제 이해:이 문제는 LRU (Least Recently Used) 캐시 알고리즘을 구현하는 것입니다. LRU 캐시는 가장 오랫동안 사용되지 않은 페이지(도시)를 교체하는 방식입니다.주어진 cities 배열을 순차적으로 처리하면서, 각 도시에 대한 참조 여부에 따라 실행 시간을 계산해야 합니다.LRU 캐시 설명:LRU 캐시는 한정된 크기의 메모리를 효율적으로 사용하기 위한 알고리즘입니다.캐시에 있는 항목 중 가장 오랫동안 사용되지 않은 항목을 교체합니다.캐시에 도시가 있으면 hit으로 간주하고 실행 시간에 1초를 더합니다.캐시에 도시가 없으면 miss로 간주하고 실행 시간에 5초를 더합니다.캐시 구현:저는 캐시를 List로 구현했습니다. 리스트의 인덱스가 낮을수록 오랫동안 참조되지 않은 도시입니.. [프로그래머스] A로 B 만들기 코드 힌트문제 이해:이 문제에서는 두 문자열 `before`와 `after`가 주어집니다. `before`의 알파벳 순서를 어떻게 바꾸든 `after`가 될 수 있는지 확인하는 것이 목표입니다. 즉, 두 문자열이 서로 다른 순서로 배열된 같은 문자들로 이루어져 있다면, `before`를 어떤 방법으로든 `after`로 변환할 수 있습니다. 알파벳 개수 세기:두 문자열이 서로 같은 문자들로 이루어져 있는지 확인하기 위해 각 문자열의 알파벳 개수를 셉니다.before와 after 문자열 각각에 대해, 각 알파벳(a~z)의 개수를 셀 수 있도록 크기 26의 배열을 사용합니다.문자 개수 비교하기:먼저 before 문자열을 순회하면서 각 문자의 개수를 세어 배열에 저장합니다.그런 다음, after 문자열도 동일하.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 24 다음