-
[C++] 과제 위쪽 둘레 구하기프로그래밍 언어 😵💫/C++ 2023. 5. 16. 00:25

//입력 사각형 개수 //사각형 가로와 세로 길이 //출력 //최대 위쪽 둘레 //1. 가로 길게 세로 짧게 //2. 세로 길게 가로 짧게 //3. 가로 길게 세로 짧게 //지그재그로 ! #include <iostream> #include <stdio.h> #include <vector> using namespace std; int main() { int n; //사각형 갯수 cin >> n; int arry[][2] = { { 0,0 } }; //0으로 초기화 int result=0; int temp; int row; vector <int> col; for (int i = 0; i < n; i++) { for (int j = 0; j < 2; j++) { cin >> arry[i][j]; } if (arry[i][0] > arry[i][1]) { // 첫 번째 원소가 더 크면 교환 temp = arry[i][0]; arry[i][0] = arry[i][1]; arry[i][1] = temp; } if (i % 2 != 0) { result += arry[i][0]; col.push_back(arry[i][1]); } else { result += arry[i][1]; col.push_back(arry[i][0]); } } // 배열의 배열, 각 사각형의 길이 정렬했음(내림차순) {작은값,큰값} //1. 배열의 홀수 인덱스 : 작은값 arry[i][0] 세로, 큰값arry[i][1] 가로 //2. 배열의 짝수 인덱스 : 작은값 arry[i][1] 가로 ,큰값arry[i][0] 세로 // //3. 홀수 인덱스의 가로 + 짝수 인덱스의 가로 //4. 짝수 인덱스의 세로값 - 홀수 인덱스(짝수 -1)의 세로값 //3과 4의 합 cout << result << "------" << endl; for (int i = 0; i < col.size()-1; i ++) { int a = abs(col[i+1]-col[i]); result += a; } for (int i = 0; i < n; i++) { for (int j = 0; j < 2; j++) { cout << arry[i][j] << " "; } cout << endl; } // result += row; cout << result << endl; }수정 전
아마 기둥의 왼쪽 값만 구했나..? 마지막 값을 안구했나? 아무튼 뭔가 빠져서...
//입력 사각형 개수 //사각형 가로와 세로 길이 //출력 //최대 위쪽 둘레 //1. 가로 길게 세로 짧게 //2. 세로 길게 가로 짧게 //3. 가로 길게 세로 짧게 //지그재그로 ! #include <iostream> #include <stdio.h> #include <vector> using namespace std; int main() { int n; //사각형 갯수 cin >> n; int arry[][2] = { { 0,0 } }; //0으로 초기화 int result = 0; int temp; int row; vector <int> col; vector<int> col_result; for (int i = 0; i < n; i++) { for (int j = 0; j < 2; j++) { cin >> arry[i][j]; } if (arry[i][0] > arry[i][1]) { // 첫 번째 원소가 더 크면 교환 temp = arry[i][0]; arry[i][0] = arry[i][1]; arry[i][1] = temp; } if (i % 2 != 0) { result += arry[i][0]; col.push_back(arry[i][1]); } else { result += arry[i][1]; col.push_back(arry[i][0]); } } // 배열의 배열, 각 사각형의 길이 정렬했음(내림차순) {작은값,큰값} //1. 배열의 홀수 인덱스 : 작은값 arry[i][0] 세로, 큰값arry[i][1] 가로 //2. 배열의 짝수 인덱스 : 작은값 arry[i][1] 가로 ,큰값arry[i][0] 세로 // //3. 홀수 인덱스의 가로 + 짝수 인덱스의 가로 //4. 짝수 인덱스의 세로값 - 홀수 인덱스(짝수 -1)의 세로값 //3과 4의 합 for (int i = 1; i <col.size(); i += 2) { col_result.push_back((col[i] - col[i - 1])+(col[i]-col[i+1])); if (i == col.size() && i % 2 !=0) { col_result.push_back(col[i - 1]); } } for(int i = 0; i < col_result.size(); i++) { result += col_result.at(i); } for (int i = 0; i < n; i++) { for (int j = 0; j < 2; j++) { cout << arry[i][j] << " "; } cout << endl; } // result += row; cout << result << endl; }여기에 가로가 긴 경우 반대로 적었어야 했는데.. 지금도 그렇고.. 코드를 어떻게 짰던건지 기억이 안나서 그냥 제출해버림..
교훈 !! 코드는 한번에 짜버리자... 나중에 추가하려면 내가 어떻게 이런생각을 했지?? 싶으니....