알고리즘/문제
-
출처: https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 주의 : 이분 탐색 아님!!! 개느림!!! (2160ms) 나는 거의 그리디? 완전탐색? 잘모르겠네.. 여튼 그런식으로 풀었음 푸는 방식은 입력을 받고 내림차순으로 정렬한다. (소스 보면 알겠지만 맨 뒤에 0이 더 있음) 앞에서부터 다음 원소의 높이와 같아지게 자르고 여태까지 잘랐던 나무를 더한다 그리고 그 값이 목표치와 비교해서 1. 딱 맞다면 다음..
[BOJ/백준 - 2805] 나무 자르기출처: https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 주의 : 이분 탐색 아님!!! 개느림!!! (2160ms) 나는 거의 그리디? 완전탐색? 잘모르겠네.. 여튼 그런식으로 풀었음 푸는 방식은 입력을 받고 내림차순으로 정렬한다. (소스 보면 알겠지만 맨 뒤에 0이 더 있음) 앞에서부터 다음 원소의 높이와 같아지게 자르고 여태까지 잘랐던 나무를 더한다 그리고 그 값이 목표치와 비교해서 1. 딱 맞다면 다음..
2022.01.14 -
문제 출처: https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 우선순위 큐를 이용해 풀면 쉽게 풀 수 있다 큐가 비어버릴 때 까지 숫자를 뽑아내면서 뽑아낸 숫자가 2개면 그 두개를 더한다 더한 수를 1. 답에다가 더함 2. 큐에 집어넣음 반복한다
[BOJ/백준 - 1715] 카드 정렬하기문제 출처: https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 우선순위 큐를 이용해 풀면 쉽게 풀 수 있다 큐가 비어버릴 때 까지 숫자를 뽑아내면서 뽑아낸 숫자가 2개면 그 두개를 더한다 더한 수를 1. 답에다가 더함 2. 큐에 집어넣음 반복한다
2022.01.13 -
문제 출처: https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이의 아이디어는 빼기 연산자가 보이는 순간부터 뒤에 숫자는 연산자와 상관없이 무조건 다 빼버린다 이건 괄호가 어떻게 쳐지는 것이 관심이 있는게 아니다 빼기 연산자가 나오는 순간 그 뒤에 양수들을 묶어서 가장 작은 최소값을 만들 수 있기 때문이다
[BOJ/백준 - 1541] 잃어버린 괄호문제 출처: https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이의 아이디어는 빼기 연산자가 보이는 순간부터 뒤에 숫자는 연산자와 상관없이 무조건 다 빼버린다 이건 괄호가 어떻게 쳐지는 것이 관심이 있는게 아니다 빼기 연산자가 나오는 순간 그 뒤에 양수들을 묶어서 가장 작은 최소값을 만들 수 있기 때문이다
2022.01.12 -
문제 출처: https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 그냥 편하게 어레이리스트 썼다 빨리 풀고 지나가고 싶었음
[BOJ/백준 - 10845] 큐문제 출처: https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 그냥 편하게 어레이리스트 썼다 빨리 풀고 지나가고 싶었음
2022.01.11 -
문제 풀이: https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 제곱이라고 Math.pow() 쓰면 오버플로난다 별다른건 없고 미리 배열에다가 제곱수를 구해놓고 계산한다
[BOJ/백준 - 15829] Hashing문제 풀이: https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 제곱이라고 Math.pow() 쓰면 오버플로난다 별다른건 없고 미리 배열에다가 제곱수를 구해놓고 계산한다
2022.01.11 -
문제 출처: https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 숫자를 오름차순으로 정렬한다 음수, 0, 1, 양수 부분을 나눠서 큐에 저장한다. 양수부분 큐는 poll을 했을때 제일 큰 값이 올 수 있도록 셋팅해준다 음수부분 큐를 하나씩 빼면서 2개 빠질때마다 곱해서 답에 더해준다 음수부분 큐가 비었을 경우 음수 1개가 남아 있다면 0부분 큐를 확인해 0이 존재하면 그냥 넘어가고 0이 존재하지 않으면 나머지 음수1개를 답에 더해준다 양수부분 큐..
[BOJ/백준 - 1744] 수 묶기문제 출처: https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 숫자를 오름차순으로 정렬한다 음수, 0, 1, 양수 부분을 나눠서 큐에 저장한다. 양수부분 큐는 poll을 했을때 제일 큰 값이 올 수 있도록 셋팅해준다 음수부분 큐를 하나씩 빼면서 2개 빠질때마다 곱해서 답에 더해준다 음수부분 큐가 비었을 경우 음수 1개가 남아 있다면 0부분 큐를 확인해 0이 존재하면 그냥 넘어가고 0이 존재하지 않으면 나머지 음수1개를 답에 더해준다 양수부분 큐..
2022.01.11