-1 -1 안 되는 거 제외하기
그 후 되는 거 생각해보기
앞에서 부터 - 뒤에서 부터
힌트 받았당
최소 최대 전부 다 손코딩 했는데 북님이 더 깔끔한 코드를 알려주셨다.
push_back()
최대랑 최소 그냥 역순 아닌가? 생각 들었는데 다른 점이 있어서 따로 짰다. 그런데 이거 조금 더 생각해보면 최소는 맨 첫자리가 1이어야 하므로 s-1을 구한 다음 첫번째 자리에 1을 더해주면 끝난다ㅋㅋ 짱신기함
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int m, s;
int start, end;
scanf("%d %d", &m, &s);
vector <int> min_ans(m, 0);
vector <int> max_ans(m, 0);
if (m == 1 && s == 0)
{
printf("0 0");
return (0);
}
if (s < 1 || m * 9 < s)
{
printf("-1 -1");
return (0);
}
//min
int sum = s - 1;
for (int i = 0; i < m; i++)
{
if (i == 0)
end = 1;
else
end = 0;
for (int j = 9; j >= end; j--)
{
if (j <= sum)
{
min_ans[i] = j;
sum -= j;
break;
}
}
}
min_ans[m - 1] += 1;
//max
sum = s;
for (int i = 0; i < m; i++)
{
if (i == 0)
end = 1;
else
end = 0;
for (int j = 9; j >= end; j--)
{
if (j <= sum)
{
max_ans[i] = j;
sum -= j;
break;
}
}
}
for (int i = m - 1; i >= 0; i--)
{
printf("%d", min_ans[i]);
}
printf(" ");
for (int i = 0; i < m; i++)
{
printf("%d", max_ans[i]);
}
return (0);
}
와~~ 끝
거의 뭐 코포를 디버깅 툴로 썼다.
첫번째는 조건문 잘못 달아서 틀리고 두번째는 push_back하면서 값 초기화 안 해서 틀리고 등등..
앞으로 코포 풀 때 컴파일러 버젼 가장 낮은 걸로 푸는 게 좋을 것 같다. 아니면 무시하고 지나감ㅋㅋㅠ
'코드포스' 카테고리의 다른 글
[코드포스 Practice13] 후기 (0) | 2020.03.07 |
---|---|
[코드포스 Practice12] D. White Sheet (0) | 2020.02.29 |
[코드포스 Practice12] B. New Year and Buggy Bot (0) | 2020.02.28 |
[코드포스 Practice12] A. k-rounding (0) | 2020.02.28 |
[코드포스 Practice12] 후기 (0) | 2020.02.28 |