문제
풀이
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, long long left, long long right) {
vector<int> answer;
int num = left/(long long)n;
for(long long i=left; i<=right; i++){
if(i%n <= num) answer.push_back(num+1);
else answer.push_back(i%n+1);
if(i%n == n-1) num++;
}
return answer;
}
다른 사람 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int n, long long left, long long right) {
vector<int> answer;
int row;
int column;
for(long long i = left; i <= right; i++){
answer.push_back(max(i / n, i % n) + 1);
}
return answer;
}
answer.push_back(max(i / n, i % n) + 1);
각각의 열에서 가장 작은 숫자는 left/n일 것이기 때문에 max를 사용하면 더 쉽게 해결할 수 있었다!
항상 불필요한 조건문을 많이 사용하는 것 같다.
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스] 정렬 - H-Index / greater<>() (0) | 2022.10.22 |
---|---|
[프로그래머스]스택 큐 - 다리를 지나는 트럭 (0) | 2022.10.22 |
[프로그래머스] 완전탐색 - 피로도 (0) | 2022.10.09 |
[프로그래머스] 위장 (0) | 2022.09.09 |
[프로그래머스] 예상대진표 (0) | 2022.09.09 |