전체 글 51

[BOJ] 1654번 랜선 자르기 (C++)

문제 (https://www.acmicpc.net/problem/1654) 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 전에 올린 나무 자르기와 비슷한 듯 다른 문제..! 나는 end 값을 입력받은 길이 중 가장 큰 값이 아닌 모든 길이의 합을 n으로 나눈 값으로 정했다. 각 길이를 mid로 나누었을 때 몫의 합이 n보다 - 크거나 같다면? 랜선의 길이를 더 길게 start 이동, 최댓값이라면 답으로 설정 - 작다면? 랜선의 길이를 더 짧게 end 이동 [소스코드] 더보기 20..

ALGORITHM/BOJ 2021.12.19

[BOJ] 2805번 나무 자르기 (C++)

문제 (https://www.acmicpc.net/problem/2805) 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 이분 탐색하는 값 (mid): 절단기의 높이 절단기의 높이가 mid일 때, 나무를 자르고 남은 길이들의 총합이 m 이상이면? - 더 큰 mid 값으로 m 이상을 구할 수도 있으므로 start를 mid + 1로 지정한다. [소스코드] 더보기 2021-05-25 Silver 3 - 이분 탐색 - 매개 변수 탐색

ALGORITHM/BOJ 2021.12.19

[BOJ] 2521번 예산 (C++)

문제 (https://www.acmicpc.net/problem/2512) 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 이분 탐색하는 값 (mid): 예산 저번에 푼 1920번 문제는 배열의 인덱스를 이분 탐색으로 찾아냈다면 이 문제는 인덱스가 아니라 값들을 이분 탐색으로 찾아야 한다. 예산 요청의 총합이 m보다 크다면 이분 탐색을 진행한다. 이분 탐색을 진행할 때마다 sum을 구해야 하는데, 요청 금액이 mid 값보다 크다면 mid 값으로 더해주어야 한다. 배정된 예산들 중 최댓값인 정수를 출력해주..

ALGORITHM/BOJ 2021.12.19

[BOJ] 1920번 수 찾기 (C++)

문제 (https://www.acmicpc.net/problem/1920) 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이분 탐색이 잘 기억이 안 나서 전에 풀었던 문제들 글을 써보려 한다 🤦‍♀️ 이 문제는 간단한 이분 탐색 문제로 숫자들의 존재 여부를 1/0으로 출력해주면 된다. [소스코드] 더보기 2021-05-25 Silver 4 - 이분 탐색

ALGORITHM/BOJ 2021.12.16

[BOJ] 12904번 A와 B (C++)

문제 (https://www.acmicpc.net/problem/12904) 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 연산 1. 문자열의 뒤에 A를 추가한다. 연산 2. 문자열을 뒤집고 뒤에 B를 추가한다. 처음 시도 땐 S에서 두 가지 연산을 모두 진행시키며 T가 되는지 체크하는 방식으로 구현했는데 계속 메모리 초과가 발생했다. 구현 방식을 바꾸어서 T를 보고 연산을 거꾸로 진행시켜서 S가 되는지 체크했다. T의 가장 마지막 문자가 A일 때? 연산 1이 적용된 것이..

ALGORITHM/BOJ 2021.11.24

[BOJ] 2866번 문자열 잘라내기 (C++)

문제 (https://www.acmicpc.net/problem/2866) 2866번: 문자열 잘라내기 첫 번째 줄에는 테이블의 행의 개수와 열의 개수인 R과 C가 주어진다. (2 ≤ R, C ≤ 1000) 이후 R줄에 걸쳐서 C개의 알파벳 소문자가 주어진다. 가장 처음에 주어지는 테이블에는 열을 읽어서 문자 www.acmicpc.net 처음엔 시간 초과로 헤맸던 문제이다 ,, 문제에 "가장 처음에 주어지는 테이블에는 열을 읽어서 문자열을 만들 때, 동일한 문자열이 존재하지 않는 입력만 주어진다."도 못 읽어서 처음 주어졌을 때도 따로 체크하고 그랬다 허허 문제를 잘 읽자!!!! 0. 입력을 다 받은 후에, 마지막 행만 검사를 한다. 1. 마지막 행에서 중복되는 단어가 없으면 위에 어떤 단어가 붙어도 문..

ALGORITHM/BOJ 2021.11.18

[BOJ] 16234번 인구 이동 (C++)

문제 (https://www.acmicpc.net/problem/16234) 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net DFS로 해결한 문제! 처음엔 문제를 제대로 이해하지 못하고 너무 어렵게 접근해서 삽질했다 ㅠㅠㅠㅠ 하지만.. 정신 차리고 풀어보니 간단했다.....😑 예제가 5개 있는데 예제 4, 예제 5를 직접 구해보면 이해가 잘 된다! dfs를 진행하며 국경선이 열리는 곳의 좌표들을 v(vector)에 넣어준다. - v의 size가 1이면? 해당 좌표에서는 국경선이 열리는 곳이 없는 ..

ALGORITHM/BOJ 2021.11.18

[C++] vector 원소 찾기, 해당 인덱스 찾기 (find 함수)

1. vector내에 해당 원소가 존재하는지 확인 find(v.begin(), v.end(), 찾을 대상) 리턴 값이 v.end()인 경우 => 해당 원소가 존재하지 않는 것 리턴 값이 v.end()가 아닌 경우 => 해당 원소 존재하는 것 2. vector내에서 해당 원소가 위치하는 인덱스 찾기 find(v.begin(), v.end(), 찾을 대상) - v.begin() #include #include #include using namespace std; int main() { vector v; v.push_back(1); v.push_back(1); v.push_back(6); v.push_back(8); if(find(v.begin(), v.end(), 0) == v.end()) { // vect..

STUDY/C++ 2021.10.24