본문 바로가기
Coding Test/Programmers

[Programmers] (2020 카카오 인턴십) Lv 2. 수식 최대화

by song.ift 2023. 10. 10.

https://school.programmers.co.kr/learn/courses/30/lessons/67257

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

cpp
닫기
#include <string> #include <vector> #include <algorithm> using namespace std; void strtok(vector<long long>& v_num, vector<char>& v_op, const char* s) { ​​​​string temp = ""; ​​​​while (*s != '\0') ​​​​{ ​​​​​​​​if (*s == '*' || *s == '+' || *s == '-') ​​​​​​​​{ ​​​​​​​​​​​​v_op.emplace_back(*s); ​​​​​​​​​​​​v_num.emplace_back(stoll(temp)); ​​​​​​​​​​​​temp = ""; ​​​​​​​​} ​​​​​​​​else temp += *s; ​​​​​​​​++s; ​​​​} ​​​​v_num.emplace_back(stoll(temp)); } long long calc(char op, long long num1, long long num2) { ​​​​switch (op) ​​​​{ ​​​​case '*': ​​​​​​​​return num1 * num2; ​​​​case '+': ​​​​​​​​return num1 + num2; ​​​​case '-': ​​​​​​​​return num1 - num2; ​​​​} } long long solution(string expression) { ​​​​long long answer = 0; ​​​​vector<long long> s_num; ​​​​vector<char> s_op; ​​​​strtok(s_num, s_op, expression.c_str()); ​​​​string op = "+-*"; ​​​​sort(op.begin(), op.end()); ​​​​do ​​​​{ ​​​​​​​​vector<long long> temp_num = s_num; ​​​​​​​​vector<char> temp_op = s_op; ​​​​​​​​for (size_t i = 0; i < op.size(); i++) ​​​​​​​​{ ​​​​​​​​​​​​char C = op[i]; ​​​​​​​​​​​​for (size_t j = 0; j < temp_op.size(); j++) ​​​​​​​​​​​​{ ​​​​​​​​​​​​​​​​if (temp_op[j] == C) ​​​​​​​​​​​​​​​​{ ​​​​​​​​​​​​​​​​​​​​long long sum = calc(C, temp_num[j], temp_num[j + 1]); ​​​​​​​​​​​​​​​​​​​​temp_num[j] = sum; ​​​​​​​​​​​​​​​​​​​​// J번 Index는 결과값으로 바꿔버리고, J + 1번 Index는 삭제를 시켜버리는 것 ​​​​​​​​​​​​​​​​​​​​temp_num.erase(temp_num.begin() + j + 1); ​​​​​​​​​​​​​​​​​​​​temp_op.erase(temp_op.begin() + j); ​​​​​​​​​​​​​​​​​​​​j--; // 모든 데이터의 Index값이 하나씩 땡겨지기 때문에 포인터를 한 칸 감소시켜 줘야 한다는 과정 ​​​​​​​​​​​​​​​​} ​​​​​​​​​​​​} ​​​​​​​​} ​​​​​​​​answer = max(answer, abs(temp_num[0])); ​​​​} while (next_permutation(op.begin(), op.end())); ​​​​return answer; }

GitHub : https://github.com/developeSHG/Algorithm-Baekjoon_Programmers/commit/c79b711367f7b257a857e048994bdfcfe06c931d#diff-b7aba199b16b39c2f363f760c0b2ca31d175dadae585b0084b0b994a4f9d7b25

 

[level 2] Title: [카카오 인턴] 수식 최대화, Time: 0.02 ms, Memory: 4.02 MB -Bae… · developeSHG/Algorithm-Baekjoon_P

…kjoonHub

github.com

 

댓글