n^2 배열 자르기

108번뇌·2021년 10월 18일
0

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 

실제 이런식으로 숫자 채우면서 해보면 알 수 있음
이렇게 초기문제부터 배열크기 사이즈 큰거 접근 다른식으로 해야하는 감각있어야함.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글