본문 바로가기

반응형

Algorithm

(109)
[백준][C++] 11286: 절대값 힙 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net - 문제 주어진 수를 우선순위 큐에 넣고 절대값이 작은 수 부터 출력하는 문제다. - 해설 우선순위 큐를 사용하기 위해 비교연산자를 만들 필요가 있다. struct cmp로 만들고 아래에 bool operator()를 오버로하여 만든다. a > b의 형태로 만들었기에 우선순위로 작은 수를 먼저 잡게 되고, < 형식으로 만들면 출력할 때 큰 수부터 나온다. - 풀이 #inclu..
[백준][C++] 11401: 이항 계수 3 https://www.acmicpc.net/problem/11401 11401번: 이항 계수 3 자연수 \(N\)과 정수 \(K\)가 주어졌을 때 이항 계수 \(\binom{N}{K}\)를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오. www.acmicpc.net - 문제 자연수 N과 정수 K가 주어졌을 때 이항 계수 NK를 1,000,000,007로 나눈 나머지를 구하는 문제다. - 해설 진짜 이거는 외워놓지 않으면 직접 생각하는건 힘든 문제일 것이다. 위는 기본이고, A와 B로 치환을 하게 되면 위와 같이 바뀐다. 그리고 이제 페르마의 소정리는 아래와 같은데, mod p는 p로 나눈 나머지라고 생각하면 된다. 그럼 이걸 A와 B로 치환한 거에 넣어보면 A/B에서 1/B를 위와..
[백준][C++] 2740: 행렬 곱셈 https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net - 문제 N * M 행렬과 M * K 행렬이 주어지면 행렬 곱셈을 이용해서 N * K 행렬을 만드는 문제다. - 해설 실버 5 문제라 쉽게 풀릴 줄 알았는데, 생각보다 시간이 많이 걸렸다. - 풀이 #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(N..
[백준][C++] 5430: AC https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net - 문제 [1,2,3,4] 와 같은 정수의 배열이 주어지면 R(앞뒤 뒤집기), D(앞 혹은 뒤의 숫자 한 개 제거하기)와 같은 방법을 통해 최종 배열을 출력하는 문제다. - 해설 문제를 보자마자 deque를 써야겠다는 생각을 하지 못하고 다른 방법을 생각했으면 좀 더 기초를 쌓고 와야한다고 생각한다.(자료구조) 물론 다른 방법으로 풀 수 있는 사람들도 있을텐데, 그건 진짜 상위권에 있는 사람들만 해당되고, 그런 사람들은 내 글을 보지 않을테니, 예외로 ..
[백준][C++] 1931: 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net - 문제 회의실을 예약하는 시작 시간과 끝나는 시간이 주어지면, 가장 많은 사람들이 회의실을 사용할 수 있는 경우를 구하는 문제다. - 해설 저장을 할때 으로 풀려고하면 진짜 힘들어지는 것 같다. 다른 사람들이 올린 질문에 답변 달린 힌트를 봤는데, 으로 풀어보라고 해서 그렇게 했다가 바로 풀렸다. 로 저장을 하면 이걸 정렬할 시에 start 순서는 상관없이 end가 짧은것부터 저장이 됩니다. 그러면 이제 같은 end 중에서 어떤 start를 사용해도 상관이 없고(이전 end보다 더 작지만 않으면) 이걸 반복해서..
[백준][C++] 13305: 주유소 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net - 문제 위와 같이 도로의 길이가 간선 위에, 주유소 기름 가격이 원 내부에 주어지고 좌에서 우로 이동할때 끝에서 끝까지 가장 저렴하게 갈 수 있는 경우를 구하는 문제다. - 해설 쉽게 풀 수 있는 문제다. 도로의 길이가 2 3 1 그리고 기름값이 5 2 4 1 이라고 되어 있으면, 1. 첫번째 도시에 들렀을 때, 지금까지 온 거리가 0이고 가장 싼 기름값이 5이므로 0 += 0 *..
[백준][C++] 10986: 나머지 합 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 골드 문제로 갈수록 점점 힘들어지는 거 같다. https://cocoon1787.tistory.com/396 이 분이 작성한 글을 봐도 봐도 이해가 안되어서 6명 넘는 사람의 글을 찾아서 이해하려고 한 것 같다. 많은 글 중에서 이해하고 보니 설명을 제일 잘 한 것 같아서 가져와봤습니다. - 문제 숫자 배열이 주어지면 연속된 부분 구간의 합이 M으로..
[백준][C++] 25682: 체스판 다시 칠하기 2 https://www.acmicpc.net/problem/25682 25682번: 체스판 다시 칠하기 2 첫째 줄에 정수 N, M, K가 주어진다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 이 문제 풀어도 풀어도 안되길래 검색해봤더니 없어서 어떻게든 설명 글 찾아서 풀어봤습니다!!!!!! 뿌듯하네요!!! https://www.acmicpc.net/board/view/103612 여기에 있는 분이 설명해준거 토대로 풀어봤으니 여러분도 제꺼 보기 전에 한 번 보고 풀 수 있는지 해보시는게 좋을 거 같아요!!! - 문제 체스판이 주어지면 K * K의 크기로 자를때 최소한의 변화로 체스판을 만들 수 있는 경우를 출력하는 문제다. ..

반응형