[ 프로그래머스 ] N^2 배열 자르기
문제
https://school.programmers.co.kr/learn/courses/30/lessons/87390
풀이
n x n 배열에서 일정 행, 열마다 숫자를 지정하고, 이를 1차원 배열로 변환 시, left부터 right 구간의 원소들을 return하는 문제로, 일반적인 2차원 배열을 변환하여 사용하면 10 ^7 까지라는 제한 조건으로 인해 시간 초과가 발생한다. 따라서 각 값은 행과 열 중 큰 수를 따라가는 규칙을 활용, 주어진 구간에서 만의 loop문을 통해 원소들을 return한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int n, long long left, long long right)
{
vector<int> answer;
for (long long i = left; i <= right; i++)
{
long long row = i / n;
long long col = i % n;
answer.push_back(max(row, col) + 1);
}
return answer;
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.