포스트

[ 프로그래머스 ] 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 라이센스를 따릅니다.