목록전체 글 (253)
개발 공부~
https://www.acmicpc.net/problem/4949 스택 괄호 문제와 유사한 문제로 하나의 괄호가 아니라 두개 종류의 괄호를 검사하는 점이 다르다 열린 괄호만 스택에 넣기닫힌 괄호를 만났을때 현재 스택이 비어있거나 맨위의 열린 괄호와 짝을 이루지 않으면 거짓한 줄을 다 검사했을 때 스택에 아직 열린 괄호가 남아있다면 거짓 import java.util.*;public class Main { static boolean isMatch(char open, char close) { if(open == '(' && close == ')') return true; if(open == '[' && close == ']') return true; return ..
https://www.acmicpc.net/problem/1966 큐 맨 앞 문서의 중요도 확인 -> 나머지 큐에 더 높은 중요도 있다면 현재 큐 뒤로그렇지 않으면 출력 -> 제거하고 출력 횟수 증가특정 위치 m에 있던 문서가 몇 번째로 출력 클래스 생성=> 입력 받은 위치와 문서의 중요도를 함께 저장 핵심문제의 설명을 간단히 하면 전체 입력 받은 중요도 배열을 내림차순으로 정렬했을때,현재 큐의 맨 위에 있는 문서의 중요도가 현재 가장 높은 중요도에 해당하지 않는다면 큐의 맨뒤로 이동하는것이때 꺼낸 문서가 m위치였다면 종료이다 => 이 점을 생각하는게 어려웠다 중요도 배열 내림차순 -> Integer 배열로 import java.util.*;import java.util.concurrent.Linke..
https://www.acmicpc.net/problem/15828 라우터 최대 크기 n, FIFO -> 큐양수 -> 패킷 번호로 큐에 넣기0 : 큐에서 가장 먼저 들어온 패킷 제거-1 : 입력 종료=> 최종적으로 큐에 남아있는 패킷을 출력, 없으면 empty출력 1차 풀이 - > 50점큐의 크기를 검사 -> add() 사용import java.util.*;import java.util.stream.Collectors;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Queue q = new L..
https://www.acmicpc.net/problem/1158 1번부터 n번까지 사람이 원형으로 앉음매 k번째 사람을 제거 -> 제거 순서를 출력 양식대로 출력 리스트 풀이https://better21.tistory.com/244 제거하고 뒤에 있던 모든 원소를 앞으로 당겨야함-> 삭" data-og-host="better21.tistory.com" data-og-source-url="https://better21.tistory.com/244" data-og-url="https://better21.tistory.com/244" data-og-image="https://blog.kakaocdn.net/dna/PEjXw/hyZbqYWWdO/AAAAAAAAAAAAAAAAAAAAAOVCtSifk6xS60K_1lTFbN-vOdV-D03qwB62Ij3TLy4F/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1753973999&allow_ip=&allow_referer=&signature=lst09SkKrRbMY%2FgaKvcvvVrgrQ8%3D
https://www.acmicpc.net/problem/15317 각 동아리방마다 보수비용 -> rooms[]각 동아리마다 지원금 예산 -> budget[]지원금 x이하로 고칠 수 있는 동아리 수의 최댓값=> 방을 동아리에 배정했을때 예산이 부족하면 차액을 지원금으로 채워야함=> rooms[i](보수비용) - budget[j](예산) > 0 이면 그 차액만큼 지원해야함 이 모든 과정을 최소 지원금으로 최대한 많이 동아리를 매칭해야함=> 보수비용이 싼 방과 예산이 많은 동아리를 매칭해야함=> rooms 오름차순, budget 내림차순 이분 탐색가능한 동아리 수 0부터 방과 동아리의 최소 개수만큼calMin메서드를 사용하여 필요한 지원금이 얼마인지 계산하여 그 값이 x이하라면 가능 calMin()매칭 가..
https://www.acmicpc.net/problem/15961 같은 종류 초밥 여러개 가능서로 다른 종류의 k개 접시를 연속해서 먹을 수 있음종류가 c인 초밥을 한번 먹을 수 있음이때 현재 연속된 k개의 접시들 중 c종류 접시가 없으면 종류가 하나 추가됨=> 먹을 수 있는 초밥의 서로 다른 종류 개수의 최댓값을 구하기원형으로 접시에 접근해야함 풀이고정 길이인 k만큼 윈도우를 설정=> 초기 윈도우 설정하고 하나씩 이동하며 하나 추가, 하나 삭제dishes 배열: 입력받은 순서대로 접시 종류를 저장dishCount 배열: 초밥 종류는 2 ≤ d ≤ 3,000 -> 인덱스를 접시 종류로, 값을 현재 윈도우에 속한 초밥 종류의 빈도로 함=> dishCount의 인덱스가 dishes배열의 값이 되어야함 ..
https://www.acmicpc.net/problem/7795 두 배열 중 배열 A 을 기준으로 각 A의 원소보다 작은 배열 B의 원소 개수를 다 더하면 되는 문제이를 위해선 두 배열 모두 오름차순 정렬해야함그래야 현재 배열 B를 가리키는 원소의 인덱스가 현재까지 배열 B에서 numA[i]보다 작은 원소의 개수를 의미함이렇게 구한 값을 answer에 누적 ==> 정렬 후 투포인터정렬하면 이미 크기가 보장되어 있기 때문에 불필요한 비교를 줄일 수 있음 ] import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t..
https://www.acmicpc.net/problem/2503 세 자리 숫자는 1부터 9 사이의 서로 다른 숫자스트라이크는 위치까지 정확볼은 숫자만 맞고 위치는 다름위의 스트라이크와 볼 개수를 만족하는 정답일 수 있는 수의 개수를 출력=> 가능한 모든 숫자를 하나씩 검사 다만, 서로 다른 숫자기 때문에 조건 필수=> 총 경우의 수 9 * 8 *7 = 504가지 => 후보 숫자를 자릿수 별로 분리하여 이를 다시 하나씩 스트라이크와 볼 개수를 만족하는지 검사 각 숫자들을 i,j,k로 힌트 숫자를 각 자릿수로 나눈 first, second, third로 비교 백의 자리 i -> first십의 자리 j -> second일의 자리 k -> third 각 숫자 자리와 힌트를 비교하여 얻은 스트라이크와 볼 ..