2023년 1월 ~ 2월에 프로그래밍을 공부하기 위해 풀었던 문제들이다.
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
코드를 짜다보니 내가 생각보다 for
문을 중첩 시켰을 때 원리를 완벽하게 이해한건 아니라는 생각이 들었다.
내가 이문제를 풀기 어려워 했던 가장 큰 이유는 ‘ 머리가 꼬여서 ‘이다. 생각보다 간단한 문제인데 나는 줄을 바꾸는 for
문과 출력하는 for
문의 역할을 뒤섞어서 생각했고, 그냥 별 출력 for
문을 2i-1번 반복하게 만들면 된다고 생각은 하면서 부등호의 방향 그리고 k++
or k--
가 혼동되어 정말 큰 혼란을 맞았다. 간단히 부등호를 줄에 맞게 변환시켜 개수를 정하고, k
의 수를 정해서 늘리며 조건을 만족하는 동안 출력되도록 하는것인데 그 역할을 망각하고 둘다 개수를 정하는 애들이라고 생각하여 이상하게 코드를 짰었다.
또한 줄마다 개수가 다른경우 몇번째 줄인지와 연관지어 for
문의 조건을 설정해야하는데 그러지 못했다는 것?
어쨌든 다양한 고민을 하며 많은 성장을 이룬것 같다.
// 별 찍기 - 5
#include <iostream>
using namespace std;
int main() {
int num;
cin >> num;
for (int i = 1; i <= num; i++) {
for (int j = num - i; j > 0; j--) {
cout << " ";
}
for (int k = 1; k < 2*i; k++) {
cout << "*";
}
cout << '\n';
}
}