c++ 48

[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

[BOJ] 20055번 컨베이어 벨트 위의 로봇 (C++)

문제 링크 (https://www.acmicpc.net/problem/20055) 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 삼성 역량 기출문제에 있길래 알고리즘 스터디 문제로 픽한 문제...! 그냥,,,,, 구현했다 더 보기 좋고 간결한 코드도 있는지 한 번 찾아봐야겠다!! pair를 자료형으로 갖는 벡터에 (first: 내구도 second: 로봇 존재 여부(1: 존재, 0: 존재 X))를 담아서 구현했다. 진행 순서는 아래와 같다. 1. 벨트가 로봇과 함께 한 칸 회전: 로봇과 함..

ALGORITHM/BOJ 2021.10.22

[프로그래머스 Level 1] 숫자 문자열과 영단어 (C++)

문제 링크 (https://programmers.co.kr/learn/courses/30/lessons/81301) 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 인자로 받은 문자열에 존재하는 영단어를 대응되는 숫자로 바꾸어 원래 숫자를 완성해주면 된다. 인자로 받은 문자열을 한 글자씩 반복하며 isdigit 함수를 통해 숫자인지 아닌지 확인한다. 숫자가 아니면(문자면) while문을 통해 zero ~ nine 중 하나의 단어가 될 때까지 임시 문자열(tmp)에 문자를 이어 붙인다. 문자열이 완성..