본문 바로가기

전체 글

(162)
섹션 4. HashMap, TreeSet - 3. 매출액의 종류 📌 문제 설명현수의 아빠는 제과점을 운영하고 있고, N일 동안의 매출기록을 가지고 있습니다. 현수는 이 기록을 가지고 연속된 K일 동안의 매출액 종류의 개수를 구하려 합니다.즉, 매일의 매출 데이터를 보고 연속된 K일 동안 서로 다른 매출액(숫자)의 개수를 계산하여 출력합니다.📝 입력 & 출력입력첫째 줄: N(5 ≤ N ≤ 100,000), K(2 ≤ K ≤ N)둘째 줄: N개의 매출기록 숫자 (각 숫자는 0 이상 500 이하)출력각 연속 K일 간의 매출액 종류의 수를 공백으로 구분하여 출력🔸 예제 입력 & 출력예제 입력 17 420 12 20 10 23 17 10 예제 출력 13 4 4 3💡 해결 방법슬라이딩 윈도우와 HashMap을 조합하여 효율적으로 각 구간의 매출 종류를 계산합니다.알고리즘..
섹션 4. HashMap, TreeSet - 2. 아나그램(해쉬) 📌 문제 설명Anagram(아나그램)이란 두 문자열이 알파벳의 나열 순서는 다르지만 각 문자의 구성과 개수가 동일한 경우를 말합니다.예를 들어,AbaAeCe 와 baeeACA 는 대소문자를 구분해서 보면 각 알파벳의 개수가 동일하므로 아나그램입니다.반면, abaCC 와 Caaab는 문자의 구성과 개수가 일치하지 않으므로 아나그램이 아닙니다.문자열 두 개가 주어졌을 때, 이 두 문자열이 아나그램인지 판별하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 첫 번째 단어 (길이 ≤ 100)두 번째 줄에 두 번째 단어 (길이 ≤ 100)대소문자 구분 O출력두 단어가 아나그램이면 YES아니면 NO🔸 예제 입력 & 출력예제 입력 1AbaAeCebaeeACA 예제 출력 1YES 예제 입력 2abaCCCaaa..
섹션 4. HashMap, TreeSet - 1. 학급 회장(해쉬) 📌 문제 설명학급 회장을 뽑기 위해 학생들이 투표한 결과가 문자열로 주어집니다. 후보는 A, B, C, D, E 중 한 명이며, 투표 결과를 분석하여 가장 많은 표를 얻은 후보(문자)를 출력하세요.단, 반드시 한 명의 회장이 정해지도록 투표 결과가 주어진다고 가정합니다.📝 입력 & 출력입력첫 번째 줄: 반 학생 수 N (5 ≤ N ≤ 50)두 번째 줄: 투표 결과 문자열 (길이 N)출력가장 많은 표를 얻은 후보의 기호 (알파벳 1개)🔸 예제 입력 & 출력예제 입력 115BACBACCACCBDEDE 예제 출력 1C💡 해결 방법HashMap를 이용하여 각 후보자의 득표 수를 카운트합니다.문자열을 순회하며 문자의 개수를 맵에 저장하고,최다 득표 수를 가진 후보를 찾아 출력합니다.💻 코드 구현 (Jav..
섹션 3 투 포인터 & 슬라이딩 윈도우 - 5. 연속된 자연수의 합(수학) 📌 문제 설명양의 정수 N이 입력되면, 2개 이상의 연속된 자연수의 합으로 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요. 예를 들어 N=15일 때 총 3가지 방법이 존재합니다.1 + 2 + 3 + 4 + 5 = 154 + 5 + 6 = 157 + 8 = 15📝 입력 & 출력입력첫 줄에 양의 정수 N (7 ≤ N 출력첫 줄에 연속된 자연수의 합으로 N을 표현하는 경우의 수 출력🔸 예제 입력 & 출력예제 입력 115 예제 출력 13💡 해결 방법연속된 자연수의 합으로 N을 표현하는 경우를 찾기 위해 작은 수부터 차례대로 더해가며 나머지를 확인하는 방식입니다.예를 들어 k개의 연속된 수의 합이 N이 되려면, N에서 1부터 (k-1)까지의 누적합을 빼고, 그 결과가 k로 나누어 떨어지는지를..
섹션 3 투 포인터 & 슬라이딩 윈도우 - 6. 최대 길이 연속부분수열 📌 문제 설명0과 1로 구성된 길이가 N인 수열이 주어집니다. 이 수열에서 최대 K번 0을 1로 변경하여 만들 수 있는 1로만 이루어진 연속 부분수열의 최대 길이를 구하는 프로그램을 작성하세요. 예를 들어 N=14이고, 수열과 K가 다음과 같다면1 1 0 0 1 1 0 1 1 0 1 1 0 1K = 2 최대 2번 0을 1로 바꿨을 때 만들 수 있는 가장 긴 1의 연속부분수열은 아래와 같습니다.[1 1 0 0 1 1 0 1 1 0 1 1 0 1] ↑-----------↑ 연속된 길이 = 8📝 입력 & 출력입력첫 줄: 수열의 길이 N과 정수 K (5 ≤ N 둘째 줄: 0과 1로 구성된 N개의 정수출력첫 줄에 최대 길이 출력🔸 예제 입력 & 출력예제 입력 114 21 ..
섹션 3 투 포인터 & 슬라이딩 윈도우 - 5. 연속된 자연수의 합(투 포인터) 📌 문제 설명양의 정수 N이 입력되면, 2개 이상의 연속된 자연수의 합으로 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요. 예를 들어 N=15일 때 총 3가지 방법이 존재합니다. 1 + 2 + 3 + 4 + 5 = 154 + 5 + 6 = 157 + 8 = 15📝 입력 & 출력입력첫째 줄에 양의 정수 N (7 ≤ N 출력첫 줄에 연속된 자연수의 합으로 N을 표현하는 경우의 수 출력🔸 예제 입력 & 출력예제 입력 115 예제 출력 13💡 해결 방법투 포인터 (Two Pointers) 기법을 활용하여, 연속된 자연수의 구간을 왼쪽 포인터(lt)와 오른쪽 포인터(rt)로 설정하고, 그 구간의 합이 N과 같은 경우를 찾습니다.rt는 1부터 시작해 N/2 + 1까지 증가시키고, 합이 N 이상..
섹션 3 투 포인터 & 슬라이딩 윈도우 - 4. 연속 부분수열 📌 문제 설명N개의 수로 이루어진 수열이 주어질 때, 이 수열에서 연속 부분수열의 합이 특정 숫자 M이 되는 경우의 수를 구하는 프로그램을 작성하세요. 예를 들어 N=8, M=6이고 수열이 다음과 같다면 1 2 1 3 1 1 1 2 합이 6이 되는 연속 부분수열은 다음과 같이 3가지입니다.{2, 1, 3}{1, 3, 1, 1}{3, 1, 1, 1}📝 입력 & 출력입력첫째 줄: 정수 N(1 ≤ N ≤ 100,000), M(1 ≤ M ≤ 100,000,000)둘째 줄: 수열의 N개 원소 (각 원소는 1,000 이하 자연수)출력첫 줄에 합이 M이 되는 연속 부분수열의 개수 출력🔸 예제 입력 & 출력예제 입력 18 61 2 1 3 1 1 1 2 예제 출력 13💡 해결 방법이 문제는 슬라이딩 윈도우 또는 ..
섹션 3. 투 포인터 & 슬라이딩 윈도우 - 3. 최대 매출 📌 문제 설명현수 아빠는 제과점을 운영 중이며, N일 동안의 매출 기록 중 연속된 K일간의 최대 매출액을 구하려 합니다.예를 들어 N=10이고, 매출이 아래와 같을 때 K=3일 경우 가장 높은 3일간 매출은 11+20+25 = 56입니다. 12 15 11 20 25 10 20 19 13 15📝 입력 & 출력입력첫 줄: 정수 N(5 ≤ N ≤ 100,000), K(2 ≤ K ≤ N)두 번째 줄: N개의 매출 기록 (각 값은 0~500)출력첫 줄에 연속된 K일 동안의 최대 매출을 출력🔸 예제 입력 & 출력예제 입력 110 312 15 11 20 25 10 20 19 13 15 예제 출력 156💡 해결 방법슬라이딩 윈도우(Sliding Window) 기법을 사용합니다.처음 K일의 합을 구한 뒤, 윈도..