안녕 세상아,

[프로그래머스/c++] Lv2 n^2 배열 자르기 본문

프로그래머스

[프로그래머스/c++] Lv2 n^2 배열 자르기

돈 많은 백수가 되고싶다 2024. 10. 5. 13:33

https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2차원 배열을 전체적으로 구하지 않고, 1차원 배열의 인덱스를 2차원 배열의 좌표로 변환할 수 있다. 

2차원 배열의 row는 1차원 배열 위치 / n

2차원 배열의 column은 1차원 배열 위치 % n

이 중 더 큰 값을 구한 후 + 1 해준다. 

#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 int i = left; i <= right; i++) {
        long long int row = i / n;
        long long int col = i % n;

        long long int maxy = max(row, col);

        answer.push_back(maxy + 1);
    }

    return answer;
}

 

인덱스 변환...ㅠ 처음 보는거라 어떻게 풀어야할지 감도 안왔던...