[프로그래머스]N^2 배열 자르기
📒활용개념
- 2차원 배열을 1차원 배열로 바꿨을 때 그 위치(index)가 어디일지 계산할 수 있어야 한다.
정형화된 식을 알고있으면 쉬운 문제.
- 문제의 조건에 맞는 행렬의 값을 구할 수 있어야 한다.
📌문제설명
- 2차원 배열을 1차원 배열로 바꿨을 때 그 위치(index)가 어디일지 계산할 수 있어야 한다.
정형화된 식을 알고있으면 쉬운 문제. - 문제의 조건에 맞는 행렬의 값을 구할 수 있어야 한다.
다음 과정을 거쳐서 1차원 배열을 만들었을 때 arr[left] ~ arr[right]만 남기고 나머진ㄴ 지운다.
- n행 n열 크기의 비어있는 2차원 배열을 만듭니다.
- i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
- 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. - 1행, 2행, ..., 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++){
answer.push_back(max((i/n), (i%n))+1); //1차원 행렬의 위치를 통해 2차원 행렬의 low, column의 값을 구할 수 있다.
}
return answer;
}
📌주의점
- 1차원 행렬의 index를 통해 2차원 행렬의 index를 구할 수 있다.
(index/n, index%n) - (n은 2차원 행렬의 행과 열의 크기) - 위의 조건의 경우 2차원 행렬의 값은 (max(low, column) + 1)이 된다는 것을 알아야 한다.
Author And Source
이 문제에 관하여([프로그래머스]N^2 배열 자르기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gomhyeok/프로그래머스N2-배열-자르기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)