728x90
반응형

문제풀이(Problem Solving) 326

컨테이너 원소들의 최대, 최소 그리고 최대 최소 비교

std::max_element, std::min_element, std::minmax_element #include 을 필요로 한다. 일반적으로 max(a,b) min(a,b)는 2개의 대해서만 최대 최소를 반환하지만 아래는 컨테이너에서 최대 최소를 반환한다. 최대 최소를 구하는 것들이다. 예를 들어 이렇게 쓸 수 있다. min만 원하면 min만 쓰고 max만 원하면 max만 쓰면 된다. 아래 예시는 최대값이다. 기본 형태 이 아래 2가지가 제일 많이 쓰일 듯 하다. max_element( ForwardIt first, ForwardIt last ); max_element( ForwardIt first, ForwardIt last, Compare comp ); ++여기서 fitst는 닫힌 구간이고 las..

문자열 <- >정수 변환 string to int, int to string

string to int, int to string 을 include 해야 한다. stoi()의 예시다. // stoi example #include // std::cout #include // std::string, std::stoi int main () { std::string str_dec = "2001, A Space Odyssey"; std::string str_hex = "40c3"; std::string str_bin = "-10010110001"; std::string str_auto = "0x7f"; std::string::size_type sz; // alias of size_t int i_dec = std::stoi (str_dec,&sz); int i_hex = std::stoi (..

백준, BOJ, 15650번 C++ [CPP]

백트래킹의 응용 2번째 문제다. Bruteforce를 이렇게 푸는 것이 효율적이다. https://www.acmicpc.net/problem/15650 먼저 풀이부터 보자 # 맞는 풀이 #include #include #include using namespace std; int N, M; // N까지의 수, M개 선택 vector vec; int check[9]; // 사용체크 //현재 숫자보다 큰 것이 들어가게끔 해야함. void func(int cnt, int cur) { if (cnt == M) { for (auto c : vec) { cout > M; //1-N 까지의 수를 중복없이 M개 뽑아서 출력(오름차순) func(0, 1); } 처음에는 cnt만 집어넣어서 넣다보니 수열이 중복되어서 나왔다..

백준, BOJ, 14501번 C++ [CPP]

난 어려웠다. 생각이 났지만 어떻게 해야할지 몰랐다. https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 맞는 풀이를 보기 전에 설명부터 해보자. 이런 문제는 첫날과 i번째의 날일 때 어떤 상황일까 생각해봐야 한다. 첫날은 어떨까?? 만약 {5,10} 이고 다음날 {2,30}이 있다면 해야할까 말아야 할까? 즉, 뒤에 뭐가 있냐에 따라 할 것인가 하지 않을 것인가 정해진다는 말이다. 그렇다면 i번째가 마지막날이라고 해보자. i번째의 날은 해야할 까? i번째 날은 상담이 진행 중이면 당연히 못하고 2일 이상 걸리면 못한다. ?????? 진짜 모르겠다. 다시 생각해보자.. 1일차에 상담을..

백준, BOJ, 10814번 C++ [CPP]

//2022.04.07 다시 업데이트 음 나는 조금 어렵게 생각했나보다.. 남들은 쉽게 풀더라. https://www.acmicpc.net/problem/10814 우선 내 풀이는 이렇다. # 맞은 풀이 #include #include #include using namespace std; struct Id{ int order; int age; string name; }; //const와 &을 받아옴 bool comp(const Id &p1, const Id &p2){ if(p1.age< p2.age){ return true; } else if(p1.age == p2.age){ return p1.order < p2.order; }else{ return false; } } int N; vector v; in..

백준, BOJ, 1912번 C++ [CPP]

다이나믹 프로그래밍의 문제는 뭔가 자꾸 많이 시킨다. 그래서 이게 DP 문제구나라는 것은 감이 오지만 어떻게 적용해야할 지 감은 바로 안온다.. https://www.acmicpc.net/problem/1912 #맞는 풀이 #include #include using namespace std; int N; int num[100001]; int dp[100001]; int main() { cin >> N; for (int i = 1; i > num[i]; } int M = -1001; for (int i = 1; i = M) { M = dp[i]; } } cout

728x90
반응형