전체 글(724)
-
[백준/BOJ] 백준 2287번 : 모노디지털 표현
www.acmicpc.net/problem/2287 2287번: 모노디지털 표현 몇 개의 숫자 K(K는 1, 2, …, 9중 하나)와 사칙 연산(덧셈, 뺄셈, 곱셈, 나눗셈)만을 사용하여 어떤 자연수 X를 수식으로 표현한 것을 X의 K-표현이라 부른다. 수식에는 괄호가 포함될 수 있으며, 나 www.acmicpc.net result[길이]에 각각의 길이에 만들어질 수 있는 값을 구한다. 우선 연산자 없이 k로만 이루어진 각 길이의 값을 저장해 놓고 구한다. 코드 #include #include #include #include #include #include #include #include using namespace std; int k; int n; set result[9]; //각 길이의 결과를 저장한..
2021.02.09 -
[백준/BOJ] 백준 5052번 : 전화번호 목록
www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 트라이를 이용하여 문제를 해결하였다. 코드 #include #include #include #include using namespace std; int t; int n; struct node { node* children[10]; int children_num; bool finish; }; node* Make_node() { node* maked_node = new node(); for ..
2021.02.09 -
[백준/BOJ] 백준 17406번 : 배열 돌리기 4
www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 회전 연산들을 정렬 후, next_permutation을 통해 회전 연산의 순서를 바꿔가며 문제를 해결한다. 코드 #include #include #include using namespace std; int n, m, k; int board[51][51]; int temp_board[51][51]; void turn(int r, int c, int s) { //이부분들은 당기다 보..
2021.02.09 -
[백준/BOJ] 백준 17135번 : 캐슬 디펜스
www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 각각의 궁수가 배치되는 모든 경우를 고려하고, 그때 제거하는 적의 수를 센다. 각각의 궁수가 제거할 적을 고르는 방법은 각각의 궁수의 위치에서 bfs를 하여 찾았다. 공격할 대상 후보를 다수로 찾았을때 그 중 왼쪽에 있는 적을 고르는것을 고려하였다. 그리고 각각의 궁수가 중복된 적을 골랐을때 처리하는것도 고려하였다. 코드 #include #include #include #include #include #include us..
2021.02.09 -
[백준/BOJ] 백준 2208번 : 보석 줍기
www.acmicpc.net/problem/2208 2208번: 보석 줍기 화영이는 고대 유적을 탐사하던 도중 보석을 발견했다. 유적 속에는 N(1≤N≤100,000)개의 보석들이 일렬로 놓여 있었다. 각각의 보석의 가치는 다를 수 있기 때문에, 화영이는 가급적 많은 이득을 www.acmicpc.net 현재 위치에서 최댓값을 구할 때, 그 전 위치(i-1)에서 보석 줍기가 끝나는 최댓값 + 현재 보석(gold[i]) 과 현재 위치에서 끝나는 m개의 보석줍기(psum[i] - psum[i-m]) 중 값이 더 큰 것이 현재 위치에서 보석 줍기가 끝날 때 최댓값이다. 코드 #include #include #include using namespace std; int n, m; vector psum(100001)..
2021.02.09 -
[백준/BOJ] 백준 16287번 : Parcel
www.acmicpc.net/problem/16287 16287번: Parcel 입력은 표준입력을 사용한다. 입력의 첫 줄에는 무게 w(10 ≤ w ≤ 799,994)와 A의 원소 개수 n(4 ≤ n ≤ 5,000)이 공백으로 분리되어 주어진다. 다음 줄에는 A의 원소인 n개의 정수 ai ∈ A(1 ≤ i ≤ n)가 www.acmicpc.net i는 0부터 n-1, j는 i+1부터 n-1 까지 이중 for문을 돌며 cache[A[i] + A[j]]에 j값(뒤쪽값)을 저장해 놓고, if (cache[w - A[i] - A[j]] != -1)을 통해 w - A[i] - A[j] 값을 만들 수 있는지 확인하고, 그때 if (cache[w - A[i] - A[j]] < i)를 통해 4개의 수가 겹치지 않았는지 ..
2021.02.09