https://programmers.co.kr/learn/courses/30/lessons/87390
[난이도] level2
[유형] 수학
[풀이]
n이 3일 때, 아래와 같이
1(1,1) 2(1,2) 3(1,3)
2(2,1) 2(2,2) 3(2,3)
3(3,1) 3(3,2) 3(3,3)
row,column 중 최댓값이 행렬의 값이 됩니다.
그러므로 left~right 값을 (row,column)의 좌표로 변환해주기만 하면
쉽게 답을 구할 수 있습니다.
left~right의 임의의 값 i에 대해 (row,column) 은 (row/n+1,row%mod+1) 이 됩니다.
#include <string>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
using ll = long long;
vector<int> solution(int n, ll left, ll right) {
vector<int> answer;
for(ll i=left;i<=right;i++){
answer.push_back(max(i/n,i%n)+1);
}
return answer;
}
https://github.com/has2/Problem-Solving/blob/master/programmers/level2/n^2_배열_자르기.cpp
'Problem-Solving > Programmers' 카테고리의 다른 글
[프로그래머스][level2] k진수에서 소수 개수 구하기 (C++) (0) | 2022.05.29 |
---|---|
[프로그래머스][level2] 양궁대회 (C++) (0) | 2022.05.29 |
[프로그래머스][level4] 미로 탈출 (C++) (0) | 2021.09.08 |
[프로그래머스][level1] 위클리 챌린지 - 6주차 (C++) (0) | 2021.09.08 |
[프로그래머스][level4] 트리 트리오 중간값 (C++) (0) | 2021.09.08 |