전체 글(724)
-
[백준/BOJ] 백준 1561번 : 놀이 공원
www.acmicpc.net/problem/1561 1561번: 놀이 공원 첫째 줄에 N(1 ≤ N ≤ 2,000,000,000)과 M(1 ≤ M ≤ 10,000)이 빈칸을 사이에 두고 주어진다. 둘째 줄에는 각 놀이기구의 운행 시간을 나타내는 M개의 자연수가 순서대로 주어진다. 운행 시간은 1 이상 30 www.acmicpc.net 이분 탐색을 통해 n번째 사람이 놀이기구를 타게 되는 시간을 구한다. 이분 탐색은 해당 시간에 몇 명이 타는지 can_ride_person = m, can_ride_person += 해당시간 / riding[i] 이런 방식으로 구한다. 그렇게 n번째 사람이 놀이기구를 탄 시간을 구하고 n번째 사람이 타기 직전 시간 (n번째 사람이 탄 시간 -1) 때 놀이 기구를 탄 사람의 ..
2021.02.18 -
[백준/BOJ] 백준 3109번 : 빵집
www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 위에서부터 순서대로 오른쪽 끝 열에 도달할 수 있는지 탐색한다 탐색할 때는 오른쪽 위 대각선, 오른쪽 직선, 오른쪽 아래 대각선 순서로 탐색한다. 그리고 열에 끝에 도달했을 때는 1을 반환하여 문제를 해결한다. 탐색을 하면서 해당 위치에 파이프라인을 연결하면서 탐색을 진행하는데, 파이프라인 연결한것을 탐색이 끝난 뒤 지울 필요가 없다 위쪽 행 부터 최적으로 연결할 수 있는 위치에 연결한 파이프 라인이라서 다른 행에서 오는 파이..
2021.02.18 -
[백준/BOJ] 백준 16402번 : 제국
www.acmicpc.net/problem/16402 16402번: 제국 배성일력 73년, 대륙을 주름잡던 성일 제국은 무리한 정복 전쟁 끝에 멸망하게 되었다. 기회를 노리던 반란군들은 혼란을 틈타 제각각 왕국을 선포했고, 왕국들은 제국의 자리를 차지하기 위해 www.acmicpc.net map을 이용한 유니온 파인드를 통해 문제를 해결했다. cin은 '\n(엔터)'을 담지 않고, getline은'\n(엔터)'을 담아서 getline에'\n(엔터)'가 들어가게 되는 문제 해결을 위해 위해 cin.ignore()가 쓰였다. 코드 #include #include #include #include #include using namespace std; int n, m; map parent; map::iterato..
2021.02.18 -
[백준/BOJ] 백준 19237번 : 어른 상어
www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net smell_board[20][20]에 각 칸의 냄새 정보를 저장하는 것을 만들고 shark_info[401]에 각 상어의 정보를 저장하는 것을 만들었다 여기서 사라진 상어는 { -1,-1,-1 }로 표현하였다. 그리고 vector priority_dir[401][5] 에 어떤 상어가 어떤 방향일때 움직이는 곳의 우선순위를 순서대로 저장하였다. 코드 #include #..
2021.02.18 -
[백준/BOJ] 백준 1253번 : 좋다
www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 두 수의 합이 어떤 수가 맞는지 확인하므로 수를 정렬한 뒤 right가 오른쪽 끝(n-1)에서 시작하는 투 포인터 (중간에서 만나기?)를 통해 문제를 해결했다. 코드 #include #include #include using namespace std; int n; vector a; int main() { cin.tie(NULL); ios_base::sync_with_stdio(false); cin >> n; for (int i = 0; i..
2021.02.18 -
[백준/BOJ] 백준 2143번 : 두 배열의 합
www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1≤m≤1,000)이 주어지고, 그 다 www.acmicpc.net 두 배열의 누적합을 구한 뒤 이를 통해 두 배열의 각각 부 배열의 합 구한다 그리고 이것을 정렬한 뒤 배열 a의 부 배열의 합 값을 모두 확인하며 해당 값과 더해서 t가 되는 것의 개수를 b의 부 배열의 합에서 lower_bound와 upper_bound를 통해 구하는 방식으로 문제를 해결했다. 코드 #include #include #..
2021.02.18