BOJ 2529 :: 부등호
문제 링크 : https://www.acmicpc.net/problem/2529
으아.. 쉬운 문제인데 오래걸렸다 ㅠㅠㅠㅠㅠ 이유는..
long long 형으로 만들어주어야 범위 초과 오류가 나지 않는데 int로 만들어 주었기 때문이었다...
10자리 숫자를 채우면 나는 그 배열을 정수로 바꾸어 주도록 함수를 만들었는데 int의 범위는 -2147483648 ~ 2147438647 이기 때문에 수를 채우다가 쓰레기값이 들어가 버린다..
이거 저번에도 신경 못 써줘서 쉬운 문제 정말 오래 푼 적이 있었는데 이번에 또... 같은 실수를 하다니....
나한테 화가 난다!!!!! 범위나 예외를 다시 한번 더 생각하고 신경써서 코딩하도록 해야겠다 ㅠ
정수를 문자열로 바꿔주기 위해서 to_string 함수를 이용하였다! 여러모로 유용한 함수!_!
반대로 문자열을 정수로 바꿔주기 위해서는 stoi 함수를 이용하면 된다!
나의 코드
Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_2529/BOJ_2529.cpp
// 백준알고리즘 2529번 :: 부등호#include<iostream>#include<string>using namespace std;int k;char op[10];bool use[10];int ans[10];long long max_ans;long long min_ans;long long makenum(){long long num = 0;for (int i = 0; i <= k; i++){num = (num * 10) + ans[i];}return num;}void tracking(int _num, int _idx){ans[_idx] = _num;use[_num] = true;if (_idx == k){// 숫자로 만들기long long num_ans = makenum();if (min_ans == 0) min_ans = num_ans;if (max_ans == 0 || max_ans < num_ans) max_ans = num_ans;return;}for (int i = 0; i <= 9; i++){// 사용하지 않았던 것이고 연산에 올바르면 실행if (!use[i]){if (((op[_idx] == '>') && ans[_idx] > i) || ((op[_idx] == '<') && ans[_idx] < i)){tracking(i, _idx + 1);ans[_idx + 1] = 0;use[i] = false;}}}}int main(void){cin >> k;for (int i = 0; i < k; i++){cin >> op[i];}for (int i = 0; i <= 9; i++) {tracking(i, 0);use[i] = false;}string max_val = to_string(max_ans);string min_val = to_string(min_ans);if (max_val.length() != k + 1) cout << "0" + max_val << '\n';else cout << max_val<<'\n';if (min_val.length() != k + 1) cout << "0" + min_val << '\n';else cout << min_val<<'\n';return 0;}
'Problem > ETC' 카테고리의 다른 글
[C/C++] BOJ 2163 :: 초콜릿 자르기 (0) | 2019.02.21 |
---|---|
[C/C++] BOJ 1725 :: 히스토그램 (0) | 2019.01.23 |
[C/C++] BOJ 12101 :: 1, 2, 3 더하기 2 (0) | 2019.01.12 |
[C/C++] BOJ 2210 :: 숫자판 점프 (0) | 2019.01.12 |
[백준알고리즘] 1005번 ACM Craft (0) | 2019.01.08 |