본문 바로가기

Coding Test/Problem Number

(75)
[Java] 보물 [1026번] https://www.acmicpc.net/problem/1026예제 입력151 1 1 6 02 7 8 3 1예제 출력118예제 입력231 1 310 30 20예제 출력280예제 입력395 15 100 31 39 0 0 3 2611 12 13 2 3 4 5 9 1예제 출력3528문제 접근A의 배열을 재배치하여 같은 인덱스끼리 곱한 값의 최소값을 구해야 함A 배열만 재배치가 가능하고, B 배열은 재배치를 하지 말라는 말에 현혹되면 안 됨서로의 인덱스를 곱했을 때 최소값이 나오려면 다음과 같음A배열에서 제일 큰 값 * B배열에서 제일 작은 값A배열에서 제일 작은 값 * B배열에서 제일 큰 값즉, 서로가 반대로 정렬이 될 경우 S의 최솟값을 구할 수 있음문제 해결A배열은 오름차순으로 Selection Sort..
[Java] 패션왕 [9375번] https://www.acmicpc.net/problem/9375예제 입력123hat headgearsunglasses eyewearturban headgear3mask facesunglasses facemakeup face예제 출력153문제 접근중복되지 않는 경우의 수를 구해야하기 때문에 조합으로 접근 필요첫 번째 테스트 케이스는 다음과 같은 경우의 수를 가짐 → hat, sunglasses, turban, (hat, sunglasses), (turban, sunglasses)headgear의 경우의 수 ⇒ hat, turbun, null(안 썼을 때) ⇒ 3개eyewear의 경우의 수 ⇒ sunglasses, null(안 썼을 때) ⇒ 2개3C1(headgear 경우의 수 중 1개 선택) * 2C1(..
[Java] 크리스마스 선물 [14235번] https://www.acmicpc.net/problem/14235예제 입력1502 3 2000예제 출력1-132-1문제 접근아이들을 만났을 때 가장 가치가 큰 선물을 준다 ⇒ 최대 힙입력첫 번째 줄 ⇒ 아이들 or 거점지 방문 횟수 N두 번째 줄0일 경우 아이들을 만남 ⇒ 선물 증정0이 아닐 경우 거점지에서 N개만큼의 선물 충전출력아이들을 만남 ⇒ 최대 가치 선물 출력줄 선물이 없다면 -1문제 해결단순한 최대 힙 문제0일 경우 출력, 0이 아닐 경우 N번 만큼 반복문으로 최대 힙에 값 추가기존 풀이 [메모리 : 43216 KB / 시간 : 472 ms]public static void main(String[] args) throws Exception{ StringBuilder sb = new St..
[Java] 최소 힙 [1927번] https://www.acmicpc.net/problem/1927예제 입력1901234567812000032예제 출력1012123456780문제 접근값을 입력하고, 출력 명령 시 가장 작은 값을 출력하는 문제전형적인 최소 힙 문제입력 ⇒ 연산 개수 N / 2 ~ N+1번째 줄 ⇒ 자연수 일 시 추가, 0일시 출력자연수는 2^31보다 작으므로 정확히 int의 max사이즈까지 입력 됨→ long을 쓰지 않아도 됨출력 ⇒ 0이 주어진 횟수 만큼 출력, 비어있을 경우 0 출력문제 해결우선순위 큐로 minHeap을 선언0이 아닐 경우 추가, 0일 경우 출력 및 제거기존 풀이 [메모리 : 26420 KB / 시간 : 320 ms]public static void main(String[] args) throws Ex..
[Java] 센티와 마법의 뿅망치 [19638번] https://www.acmicpc.net/problem/19638예제 입력11 10 120예제 출력1NO10예제 입력22 10 31632예제 출력2YES3예제 입력32 10 31278예제 출력3NO15예제 입력41 1 1000001예제 출력4NO1문제 접근마법의 뿅망치를 사용해서 센티보다 키를 작게 할 수 있는지 판단하는 프로그램단, 1보다 작아질 수 없음입력첫째줄 ⇒ 거인의 인구수 N / 센티의 키 H / 마법의 뿅망치 횟수 T둘째줄 ~ N+1번째줄 ⇒ 거인의 키출력가능 ⇒ YES / 마법의 망치 사용 횟수불가능 ⇒ NO / 제일 큰 거인의 키문제 해결최대 힙으로 간단히 풀 수 있는 문제최대 힙의 값이 센티보다 크다면 마법의 망치 사용 횟수 1 감소 → 최대 힙 / 2한 값을 다시 추가최대 힙의 값이..
[Java] 요세푸스 문제 [1158번] https://www.acmicpc.net/problem/1158예제 입력17 3예제 출력1문제 접근1 ~ N까지 원을 그리고 K번째마다 빼서 별도 저장원이 모두 사라질 때까지 반복문제 해결1 ~ N번까지 Queue에 추가하여 Queue 셋팅K-1번을 빼고 다시 Queue에 추가K번은 빼고 StringBuilder에 추가기존 풀이 [메모리 : 294824 KB / 시간 : 576 ms]public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br...
[Java] 프린터 큐 [1966번] https://www.acmicpc.net/problem/1966예제 입력131 054 21 2 3 46 01 1 9 1 1 1예제 출력1125문제 접근중요도는 1 ~ 9까지 존재가장 처음 문서를 0번째로 시작테스트 케이스 첫 번째 줄에는 문서의 개수 N, 몇 번째로 출력 되었는지 궁금한 M번째 문서테스트 케이스 두 번째 줄에는 N개 문서의 중요도가 주어짐문제 해결문서의 번호와 중요도를 저장하는 클래스를 만들어 Queue에 순차적으로 저장맨 앞의 문서의 중요도가 가장 높은 지 큐의 모든 데이터를 순회하며 확인가장 높은 중요도일 경우 꺼내고, 문서 출력 카운트 1증가, M번째 문서라면 반복문 종료가장 높은 중요도가 아닐 경우 가장 높은 중요도가 나올 때까지 뒤로 추가기존 풀이 [메모리 : 16264 KB ..
[Java] 에디터 [1406번] https://www.acmicpc.net/problem/1406예제 입력1abcd3P xLP y예제 출력1abcdyx예제 입력2abc9LLLLLP xLBP y예제 출력2yxabc예제 입력3dmih11BBP xLBBBP yDDP z예제 출력3yxz문제 접근문자열을 자르고 더하는 것으로 시도해보았지만 시간 초과 (0.3초)Stack을 사용하게 되면 시간 복잡도가 O(1)을 갖는다고 함문제 해결2개의 스택을 가지고 하나는 데이터 저장용, 하나는 출력용으로 사용L(커서 왼쪽 이동) 명령 : 1번 → 2번 스택 이동D(커서 오른쪽 이동) 명령 : 2번 → 1번 스택 이동B(커서 왼쪽 삭제) 명령 : 1번 스택 맨 위의 데이터 삭제P ?(? 데이터 삽입) 명령 : 1번 스택 데이터 추가모든 명령이 종료된 뒤 1번..