https://programmers.co.kr/learn/courses/30/lessons/87390?language=python3
못풀었음.
2차원 배열 크기부터 10^7승임. 내 풀이
#include <string>
#include <vector>
#include <deque>
using namespace std;
bool chk[10000001][10000001] = { false, };
vector<int> solution(int n, long long left, long long right) {
vector<int> answer;
vector<vector<int>> vvTemp(0, vector<int>(0, n));
deque<int> dqBeforeCut;
for (int i = 0; i < n; i++)//이렇게해서 내부 다채워주고
{
for (int j = 0; j <= i; j++)
{
if (chk[i][j] == false)
{
chk[i][j] = true;
vvTemp[i][j] = i + 1;
}
}
}
for (int i = 0; i < vvTemp.size(); i++)
{
for (int j = 0; j < vvTemp.size(); j++)
{
dqBeforeCut.emplace_back(vvTemp[i][j]);
}
}
for (int i = left; i < left + right; i++)
{
answer.push_back(dqBeforeCut[i]);
}
return answer;
}
배열크기부터 오버플로우남.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int n, long long left, long long right) {
vector<int> answer;
int row;
int column;
for (long long i = left; i <= right; i++) {
int bigg1 = i / n;
int bigg2 = i % n;
answer.push_back(max(bigg1, bigg2) + 1);
}
return answer;
}
int main()
{
int n = 4;
long long left = 2;
long long right = 7;
vector<int> vResult = solution(n, left, right);
//KAKAO[11, 1, 27, 15]
return 0;
}
이 풀이 할 때 만약 n = 4라면
0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15
나머지 0 1 2 3 | 0 1 2 3 | 0 1 2 3 | 0 1 2 3
몫 0 0 0 0 | 1 1 1 1 | 2 2 2 2 | 3 3 3 3
실제 이런식으로 숫자 채우면서 해보면 알 수 있음
이렇게 초기문제부터 배열크기 사이즈 큰거 접근 다른식으로 해야하는 감각있어야함.