!! 내 맘대로,정리되지 않은 소스코드입니다. 주의 !!
[별 찍기 1-1] 빈칸(공백) 고려하지 않는 기본적인 별 찍기 문제
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
[별 찍기 1-2] 빈칸(공백) 고려하지 않는 기본적인 별 찍기 문제
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
[별 찍기 1-3] 빈칸(공백) 고려하지 않는 기본적인 별 찍기 문제 (1-1 문제 + 1-2 문제)
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
cout << "*";
}
cout << endl;
}
n--;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
[별 찍기 2-1] 빈칸(공백) 고려하는 별 찍기 문제 (왼쪽에 공백 존재)
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 1; j <= n; j++) {
if (i > 0 && j <= i) {
cout << " ";
}
else {
cout << "*";
}
}
cout << endl;
}
return 0;
}
[별 찍기 2-2] 양쪽에 빈칸(공백) 존재
<사용한 변수 설명>
- n : 입력 받은 수 = 행의 갯수
- x : (2n -1) = 열의 갯수
#include<iostream>
using namespace std;
int main() {
int n ;
cin >> n;
int x = 2 * n - 1;
for (int i = 0; i < n; i++) {
for (int j = 1; j <= x; j++) {
if (i > 0 && (j <= i || j > x-i)) {
cout << " ";
}
else {
cout << "*";
}
}
cout << endl;
}
return 0;
}
[별 찍기 2-3] 양쪽에 빈칸(공백) 존재 (2-4 문제와 비교하기)
<사용한 변수와 설명>
- n : 입력 받은 수 = 행의 갯수
- x : (2n -1) = 열의 갯수
- 소스코드에서 17번째 줄에서 "j > i+1"은 오른쪽 공백을 생성한다.
- 소스코드에서 12번째와 16번째 줄의 "if - else if 문"은 아래의 사진처럼 대칭을 기준으로 나눠서 구현한 것이다.
#include<iostream>
using namespace std;
int main() {
int n ;
cin >> n;
int x = 2 * n - 1;
for (int i = 0; i < x; i++) {
for (int j = 1; j <= x; j++) {
// i < n 일 경우
if (i > 0 && i < n && (j <= i || j > x - i)) {
cout << " ";
}
// i >= n 일 경우 -> i를 x-i-1 로 변경 (오른쪽에도 공백 만들기)
else if (i >= n && (j < x - i || j > i + 1)) {
cout << " ";
}
else {
cout << "*";
}
}
cout << endl;
}
return 0;
}
[별 찍기 2-4] 왼쪽에 빈칸(공백) 존재, 오른쪽 빈칸(공백) 존재하지 않음 (2-3문제와 비교하기)
소스코드에서 12번째와 20번째 줄의 if - else if 문은 위의 사진처럼 대칭을 기준으로 나눠서 구현한 것이다.
#include<iostream>
using namespace std;
int main() {
int n ;
cin >> n;
int x = 2 * n - 1;
for (int i = 0; i < x; i++) {
for (int j = 1; j <= x; j++) {
if (i < n ) {
if (i > 0 && j <= i) { // i == 0 (첫번째 행)을 제외
cout << " "; // " " 빈칸 생성
}
else if (j <= x - i) {
cout << "*"; // "*" 별 생성
}
}
else if (i >= n) { // 대칭 시작부터
if (j < x - i) {
cout << " "; // " " 빈칸 생성
}
else if (j <= i + 1) {
cout << "*"; // "*" 별 생성
}
}
}
cout << endl;
}
return 0;
}
'etc > algorithm' 카테고리의 다른 글
[C언어] 포인터 문자열 VS 배열 문자열 (같지 않다!) (0) | 2021.02.25 |
---|---|
[C#] 입출력과 데이터 (0) | 2020.10.07 |
[C++] c++ 시작하기 : cout, cin, namespace, 오버로딩 (0) | 2020.05.18 |
[Python] 5장 재귀와 반복 : 정렬 (Sorting) (0) | 2020.05.08 |
[Python] 4장 재귀와 반복 : 자연수 계산 (0) | 2020.05.08 |