[ 문제 ] : https://www.acmicpc.net/problem/2438

 

2438번: 별 찍기 - 1

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

www.acmicpc.net


[ 문제 접근 ]

 

- 기본 별 찍기 문젠데, 고민도 말고 풀어야됨에도 고민을 하게 되서 기록해본다.


[ 2438 ]

 

첫번째 방법.

for (int i = 0; i < n; i++) {
	for (int j = 0; j <= i; j++) {
		cout << "*";
	}
	cout << std::endl;
}

 

두번째 방법.

string star ="";
for (int i = 0; i < n; i++) {
	star += "*";
	cout << star << '\n';
}

[ 2439 ]

 

첫번째 방법.

std::string star = "";

for (int i = 0; i < n; i++) {
	for (int j = i+1; j < n; j++) {
		cout << ' ';
	}
	star += "*";
	cout << star << '\n';
		
}

 

두번째 방법.

 

std::string star = "";

for (int i = 0; i < n; i++) {
	cout << std::setw(n);
	star += "*";
	cout << star <<'\n';
}

 

세번째 방법.

 

for (int i = 1; i <= n; i++) {
	for (int j = n - i; j > 0; j--) cout << " ";
	for (int j = i; j >0 ; j--) cout << "*";
	cout << std::endl;
}

[ 2440 ]

 

 

for (int i = 0; i <n; i++) {
	for (int j = n-i; j > 0; j--) {
		cout << "*";
	}
	cout << std::endl;

}

[ 2441 ]

 

첫번째 방법

for (int i = 0; i <n; i++) {
	for (int j = 0; j < i; j++) {
		cout << " ";
	}
	for (int j = i; j < n; j++) {
		cout << "*";
	}
	cout << std::endl;
}

 

 

두번째 방법.

for (int i = 0; i < N; i++){
       for (int j = 0; j < i; j++) cout << " ";
       for (int j = N-i ; j >0 ; j--) cout << "*";

       cout << endl;
}

 

 

 


[ 2442 ]

 

첫번째 방법

for (int i = 0; i < n; i++) {
	for (int j = 1; j < n-i; j++) {
		cout << " ";
	}
	for (int j = 0; j < 2*i+1; j++) {
		cout << "*";
	}
	cout << std::endl;
}

 

 

두번째 방법.

 

for (int i = 0; i < n; i++) {
	for (int j = 0; j < n-i-1; j++) {
		cout << " ";
	}
	for (int j = 0; j < 2*i+1; j++) {
		cout << "*";
	}
	cout << std::endl;
}

[ 2443 ]

 

첫번째 방법

for (int i = n; i > 0; i--) {
	for (int j = 0; j < n-i; j++) {
		cout << " ";
	}
	for (int j = 0; j < 2 * i - 1; j++) {
		cout << "*";
	}
	cout << std::endl;
}

 

 

두번째 방법.

 

for (int i = 0; i < n; i++) {
	for (int j = 0; j < i; j++) cout << " ";
	for (int j = 0; j < 2 * (n - i) - 1; j++) cout << "*";
	cout << std::endl;
}

 


[ 2445 ]

 

첫번째 방법

	for (int i = 0; i < n; i++) {
		for (int j = 0; j <= i; j++) {
			cout << "*";
		}
		for (int j = 0; j < 2 * (n - i - 1); j++) {
			cout << " ";
		}
		for (int j = 0; j <=i; j++) {
			cout << "*";
		}
		cout << std::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 << std::endl;
	}

 

두번째 방법

 

 for (int i = -(N-1) ; i < N ; i++)

        {

               for (int j = 0; j < N - abs(i); j++) cout << "*";

               for (int j = 0; j < abs(i)*2; j++) cout << " ";

               for (int j = 0; j < N - abs(i); j++) cout << "*";

               cout << endl;

        }

[ 2446 ]

 

첫번째 방법.

 

for (int i = -(n-1); i < n;i++) {
		for (int j = 0; j < n-std::abs(i)-1; j++) {
			cout << " ";
		}
		for (int j = 0; j < 2*std::abs(i)+1; j++) {
			cout << "*";
		}
		/* 아래는 생략해줘 된다. 생략 안해주면 백준에서 실패라고 뜬다
        for (int j = 0; j < n-std::abs(i)-1; j++) {
			cout << " ";
		}*/
		cout << std::endl;
	}

 

두번째 방법.

 for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < i; j++)
            cout << " ";

        for (int j = 0; j < 2 * (N - i) - 1; j++)
            cout << "*";

        cout << endl;
    }
    
    for (int i = 0; i < N - 1; i++)
    {
        for (int j = 0; j < N-i-2; j++)
            cout << " ";

        for (int j = 0; j < 2 * (i+2) - 1; j++)
            cout << "*";

        cout << endl;
    }

[ 2522 ]

 

첫번째 방법.

 

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n-i-1; j++) {
			cout << " ";
		}
		for (int j = 0; j < i+1; j++) {
			cout << "*";
		}
		cout << std::endl;
	}
	for (int i = 1; i < n; i++) {
		for (int j = 0; j < i; j++) {
			cout << " ";
		}
		for (int j = i; j < n; j++) {
			cout << "*";
		}
		
		cout << std::endl;
	}

 

두번째 방법

for (int i = -(n-1); i < n; i++) {

		for (int j = 0; j < std::abs(i); j++) {
			cout << " ";
		}
		for (int j = 0; j < n-std::abs(i); j++) {
			cout << "*";
		}
		cout << std::endl;
	}

 


[ 10991 ]

 

첫번째 방법.

 

for (int i = 1; i <= n; i++) {
	for (int j = 0; j < n-i; j++) {
		cout << " ";
	}
	for (int j = 0; j < 2*i-1; j++) {
		if (j % 2 == 0) {
			cout << "*";
		}
		else {
			cout << " ";
		}
	}
	cout << std::endl;
}

 

두번째 방법

for (int i = 1; i <= n; i++) {
	for (int j = 0; j < n-i; j++) {
		cout << " ";
	}
	int toggle = 1;
	for (int j = 0; j < 2*i-1; j++) {
		if (toggle == 1)cout << "*";
		else cout << " ";
		toggle *= -1;
	}
	cout << std::endl;
}

세번째 방법

 

for (int i = 1; i <= N; i++){
       for (int j = 0; j < (N - i); j++) cout << " ";
       
       for (int j = (N - i); j < N; j++){
              cout << "*" << " ";
           }
           
       cout << endl;

 }

 


[ 10991 ]

 

첫번째 방법.

	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n - i; j++) {
			cout << " ";
		}
		for (int j = 1; j <= 2*i-1; j++) {
			if (i == n) {
				for (int j = 0; j < 2 * i - 1; j++) {
					cout << "*";
				}
				break;
			}
			if (j == 1 || j == 2 * i - 1) {
				cout << "*";
			}
			else cout << " ";
		}
		cout << std::endl;
	}

 

두번째 방법

for (int i = 0; i < N; i++)
        {
           for (int j = 0; j < N - i - 1; j++) cout << " ";
           if (i == (N - 1))
           {
                   for (int j = 0; j < i * 2 + 1; j++) cout << "*";
           }
           else
           {
                   for (int j = 0; j < i * 2 + 1; j++){
                          if (j == 0 || j == (i * 2)) cout << "*";
                          else cout << " ";
                   }
           }  
           cout << endl;

        }

+ Recent posts