[프로그래머스 C++] 우박수열 정적분
[프로그래머스 C++] 우박수열 정적분
https://school.programmers.co.kr/learn/courses/30/lessons/134239
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해결방안
수학, 구현
정적분 공식을 사용하지 않아도 된다.
구분구적법의 개념으로 x길이 1단위로 도형의 넓이를 구하면 된다.
넓이는 마름모를 구하는 방식인 (윗변 길이 + 아랫변 길이) / 2 로 구하면 된다.
정답 코드
#include <vector> using namespace std; vector<double> solution(int k, vector<vector<int>> ranges) { vector<pair<int, double>> v; // (x, y) 좌표를 저장하는 벡터 vector<double> answer; int n = 0; while (k > 1) { v.push_back({ n, k }); // (x, y) 좌표 저장 if (k % 2 == 0){ k /= 2; } else { k = k * 3 + 1; } n++; } v.push_back({ n, k }); for(int i = 0; i < ranges.size(); i++) // 각 범위에 대해 넓이을 계산하고, 계산한 결과를 answer 벡터에 저장 { double temp = 0.0f; if(ranges[i][0] > n + ranges[i][1]){ // 범위가 유효하지 않은 경우 temp = -1.0f; // 문제에서 범위가 유효하지 않은 경우 -1를 넣으라함 } for(int j = ranges[i][0]; j < n + ranges[i][1]; j++) { temp += (v[j].second + v[j + 1].second) / 2; } answer.push_back(temp); } return answer; } int main(){ vector<vector<int>> testcase1 = { {0,0}, {0,-1}, {2,-3}, {3,-3} }; vector<vector<int>> testcase2 = { {0,0}, {1,-2}, {3,-3} }; vector<double> result1 = solution(5, testcase1); for(int i = 0; i < result1.size(); i++){ cout << result1[i] << " "; } cout << "\n"; vector<double> result2 = solution(3, testcase2); for (int i = 0; i < result2.size(); i++) { cout << result2[i] << " "; } return 0; }
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 과제 진행하기 (0) | 2024.03.13 |
---|---|
[프로그래머스 C++] 혼자 놀기의 달인 (0) | 2024.03.11 |
[프로그래머스 C++] 광물 캐기 (0) | 2024.03.04 |
[프로그래머스 C++] 점 찍기 (0) | 2024.03.02 |
[프로그래머스 C++] 문자열 압축 (0) | 2024.02.27 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 과제 진행하기
[프로그래머스 C++] 과제 진행하기
2024.03.13[프로그래머스 C++] 과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 문자열 자료구조 스택 stack 정답코드 #include #include #include #include #include using namespace std; struct Info { // 과제 정보를 담는 구조체 정의 string subject; int time, duration; Info(string a, int b, int c) { subjec… -
[프로그래머스 C++] 혼자 놀기의 달인
[프로그래머스 C++] 혼자 놀기의 달인
2024.03.11[프로그래머스 C++] 혼자 놀기의 달인 https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 구현 풀이보다 문제를 해석하기가 더 힘든 문제다… 정답코드 #include #include #include #include using namespace std; int solution(vector cards) { int n = cards.size(); // 전체 카드수 if (n < 1) return 0; // 카드가 한 개만 있는 경우 vec… -
[프로그래머스 C++] 광물 캐기
[프로그래머스 C++] 광물 캐기
2024.03.04[프로그래머스 C++] 광물 캐기 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결전략 깊이우선탐색 DFS 그리디 Greedy 정답 코드 - DFS #include #include #include using namespace std; int answer; // fatigue: 피로도, idx: 현재 인덱스, dia, iro, sto: 각 곡괭이의 수, 광물 벡터 void Shuffle(int fatigue, int idx, int dia,… -
[프로그래머스 C++] 점 찍기
[프로그래머스 C++] 점 찍기
2024.03.02[프로그래머스 C++] 점 찍기 https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결 전략 수학 #include using namespace std; long long solution(int k, int d) { long long answer = 0; for(int a = 0; a * k
댓글을 사용할 수 없습니다.