-
백준 2441, 2442, 2445, 2446, 2522, 10991, 10992쾌락없는 책임 (공부)/알고리즘 문제풀이 2020. 12. 27. 15:21반응형
<2441 - www.acmicpc.net/problem/2441>
#include <iostream> using namespace std; int main(){ int n; cin >> n; // i 층에 있어야 할 것 i-1만큼의 공백 후 n-i+1만큼의 별 for(int i = 0; i < n; i++){ for(int j = 0; j < i; j++) cout << " "; for(int j = 0; j < n-i; j++) cout << "*"; cout << endl; } }
<2442 - www.acmicpc.net/problem/2442>
#include <iostream> using namespace std; int main(){ int n; cin >> n; // i 층에 있어야 할 것 i-1만큼의 공백 후 // 1층의 경우 공백 4개 후 별 1개 후 공백 4개 // 2층의 경우 공백 3개 후 별 3개 후 공백 3개 for(int i = 1; i < n+1; i++){ for(int j = 0; j < n-i; j++) cout << " "; for(int j = 0; j < 2*i-1; j++) cout << "*"; cout << endl; } }
- 처음 만든건 별 후에 나오는 공백도 출력을 했는데 그럴 필요는 없다고 한다.
<2445 - www.acmicpc.net/problem/2445>
#include <iostream> using namespace std; int main(){ int n; cin >> n; // 1층에 있는것 1개의 별 후 7개의 공백 후 1개의 별 // 4층에 있는것 4개의 별 후 2개의 공백 후 4개의 별 // 공백은 2n -2i만큼 for(int i = 1; i < n+1; i++){ for(int j = 0; j < i; j++) cout << "*"; for(int j = 0; j < 2*(n-i); j++) cout << " "; for(int j = 0; j < i; j++) cout << "*"; cout << endl; } for(int i = 1; i < n; i++){ for(int j = 0; j < n-i; j++) cout << "*"; for(int j = 0; j < 2*i; j++) cout << " "; for(int j = 0; j < n-i; j++) cout << "*"; cout << endl; } // n+1층에 있는 것, // 5+1 = 4 / 5+2 = 3 / 5+3 = 2 // 2n-1층까지 있음 }
- 이게 정말 맞는걸까?
- for문이 너무 많아서 조금 안좋아보인다
<2446 - www.acmicpc.net/problem/2446>
#include <iostream> using namespace std; int main(){ int n; cin >> n; for(int i = 1; i < n+1; i++){ for(int j = 1; j < i; j++) cout << " "; for(int j = 0; j < 2*(n-i)+1; j++) cout << "*"; cout << endl; } for(int i = 1; i < n; i++){ for(int j = 1; j < n-i; j++) cout << " "; for(int j = 0; j < 2 * i +1; j++) cout << "*"; cout << endl; } }
<2522 - www.acmicpc.net/problem/2522>
#include <iostream> using namespace std; int main() { int n; cin >> n; for(int i = 1; i < n+1; i++){ for(int j = 0; j < n-i; j++) cout << " "; for(int j = 0; j < i; j++) cout << "*"; cout << endl; } for(int i = 1; i < n; i++){ for(int j = 0; j < i; j++) cout << " "; for(int j = 0; j < n-i; j++) cout << "*"; cout << endl; } }
<10991 - www.acmicpc.net/problem/10991>
#include <iostream> using namespace std; int main() { int n; cin >> n; for(int i = 1; i <= n; i++){ for(int j = i; j <= n-1; j++) cout << " "; for(int j = 1; j <= 2*i-1; j++){ if(j % 2 == 1) cout << "*"; else cout << " "; } cout << endl; } }
- 시간 좀 걸린 문제
- 규칙을 찾는건 쉬웠지만 잡생각이 많아 띄어쓰기 제어를 잘 못했음
<10992 - www.acmicpc.net/problem/10992>
#include <iostream> using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++){ for(int j = 0; j < n-i; j++) cout << " "; if(i == 1) cout << "*"; else if(i == n){ for (int k = 0; k < 2*n-1; k++) cout << "*"; } else{ cout << "*"; for(int k = 0; k < 2*i-3; k++) cout << " "; cout << "*"; } cout << endl; } }
- 이전 문제 푸니깐 좀 쉬운편
- '공백'에 초점을 맞추는게 중요
- 위 아래는 규칙이 아닌 조건으로 인한 출력이라 생각하자
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
백준 2751 Merge Sort, QuickSort, HeapSort (0) 2021.01.01 백준 2750 버블정렬 풀이 (0) 2020.12.29 백준 8393,10818, 2438, 2439, 2440 (0) 2020.12.26 백준 11720, 11721, 2741, 2742, 2739, 1924 (0) 2020.12.26 백준 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719 (0) 2020.12.25