본문 바로가기

반응형

분류 전체보기

(139)
[백준][C++] 1520: 내리막 길 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net - 문제 2차원 배열이 있고, 상하좌우로 숫자가 작은 곳으로만 움직일 수 있다고 할 때 가장 우측하단에 도착할 수 있는 경우의 수를 구하는 문제다. - 해설 1. (틀린 방법) 일반적인 dfs 방법으로 하나의 점에서 상하좌우를 확인하고 해당 조건에 맞으면 가장 우측하단에 있는 지점에 도착하는 경우의 수를 구하는 방법을 생각해봤다. - 이동이 중복되는 경우도 있고, 경우의 수가 너무 많아서 시간초과가 남..
[백준][C++] 1063: 킹 https://www.acmicpc.net/problem/1063 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net - 문제 체스판 위에 킹의 위치와 돌의 위치가 주어졌을 때 각종 이동 후에 킹과 돌의 위치를 출력하는 문제다. - 해설 "A3"와 같은 위치가 주어지면 이걸 어떻게 C++언어의 배열로 변경해서 문제를 풀 것인지를 생각해야 하는 문제다. 상하좌우와 대각선까지 8방향을 dx,dy를 이용해서 접할수있고, check 함수를 만들어서 방향으로 이동한 킹과 돌이 체스판위에 있는지 확인하도록 하였다. - 풀이 #incl..
[백준][C++] 2293: 동전 1 https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net - 문제 동전의 값이 n개 주어지면 이 동전들을 이용해서 k원을 만들 수 있는 경우의 수를 구하는 문제다(중복없이). - 해설 이건 나도 혼자서 못 풀어서 다른 사람 풀이를 보고 참고했다. 1, 2, 5원이 있다고 할 때 dp라는 배열에 1을 이용했을 때 만들 수 있는 경우의 수를 저장하고 그 다음 반복문에서 2도 함께 사용했을 때, 즉 1과 2를 사용했을 때 만들 수 있는 경우의수를 더한다. 마지..
[백준][C++] 23757: 아이들과 선물 상자 https://www.acmicpc.net/problem/23757 23757번: 아이들과 선물 상자 모든 아이들이 실망하지 않고 각자 원하는 만큼 선물을 가져갈 수 있으면 $1$을, 그렇지 않으면 $0$을 출력한다. www.acmicpc.net - 문제 N개의 선물 상자에 각각 c개의 선물이 들어 있고, M명의 아이들이 각자 w개의 선물을 받고 싶을 때 아이들이 주어진 순서대로 선물을 고를 때 모든 아이들이 선물을 받을 수 있는지 없는지 판별하는 문제다. - 해설 https://stopthebackspace.tistory.com/123 위의 링크에서 우선순위 큐를 처음 사용해 보았고, 어떻게 사용해야 하는지 배웠기에, 큰 숫자가 먼저 튀어나오도록 우선순위큐를 만들어 사용하면 문제를 풀 수 있다. 나는 ..
[백준][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를 써야겠다는 생각을 하지 못하고 다른 방법을 생각했으면 좀 더 기초를 쌓고 와야한다고 생각한다.(자료구조) 물론 다른 방법으로 풀 수 있는 사람들도 있을텐데, 그건 진짜 상위권에 있는 사람들만 해당되고, 그런 사람들은 내 글을 보지 않을테니, 예외로 ..

반응형