인덱스의 값이 n
의 몫과 나머지 중 큰 쪽이라는 규칙은 찾아서 주석처럼 풀었는데, 테케 2번은 메모리 초과, 15번부터는 다 틀려서 다시 풀었다.
굳이 저렇게 풀 이유가 없었음.. 규칙 다 찾고 허튼 짓 하기
left
부터 right
까지 반복문으로 돌린다i
인덱스의 값을 구하려면 i
의 행과 열을 구해야 한다.i
의 행은 i/n
, 열은 i%n
이다.answer
에 넣어주면 된다.#include <string>
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
vector<int> solution(int n, long long left, long long right) {
vector<int> answer;
/*int start_row = left/n;
int start_col = left%n;
int end_row = right/n;
int end_col = right%n;
for(int i=start_col;i<n;i++) // 잘린 배열 중 맨 윗 부분
{
answer.push_back(max(i+1,start_row+1));
}
for(int i=start_row+1;i<end_row;i++) // 가운데 온전한 부분
{
for(int j=0;j<n;j++)
{
answer.push_back(max(i+1,j+1));
}
}
if(start_row!=end_row)
{
for(int i=0;i<=end_col;i++) // 맨 마지막 부분
{
answer.push_back(max(i+1,end_row+1));
}
}*/
for(long long i=left;i<=right;i++)
{
answer.push_back(max(i/n+1, i%n+1));
}
return answer;
}