별찍기 1
코드 및 풀이방식
사실 while이나 여러 반복문이 있지만 for문을 사용해서 풀어보았다
1학년, 코딩을 처음 시작했을 때 이 문제를 접하고 매우 당황했던 기억이 난다 ㅎ_ㅎ
<풀이방식>
1. 5를 입력했을 때 5줄이 출력됨 -> for문 전체 반복 수가 5
입력받은 변수의 이름이 star라면
전체 반복문을 for(int i=0;i<star;i++) 이런 식으로 만들고 시작한다.
2. 별이 1개부터 5개까지 많아진다.
i=0일 때: 별의 개수 j=1
i=1일 때: 별의 개수 j=2
* 즉 관계가 j=i+1 라는 것을 알 수 있다.
여기서 식을 세워보면 for(int j=0;j<i+1;j++)이 되고 두 반복문을 겹쳐서 만들면 끝!
<코드>
#include <iostream>
using namespace std;
//별찍기 1
int main(){
int star;
cin >> star;
for (int i = 0; i < star; i++)
{
for (int j = 0; j < i + 1; j++){
cout << "*";
}
cout << endl;
}
}
별찍기 2
코드 및 풀이방식
별찍기 문제는 거의 비슷비슷 한 것 같은데 아까랑 처리가 조금 다르다.
1. 5를 입력했을 때 5줄이 출력됨 -> for문 전체 반복 수가 5
공백이 4개부터 0개까지 줄어들기 때문에 i를 1부터 star까지 반복(어쨌든 5번)
입력받은 변수의 이름이 star라면
전체 반복문을 for(int i=1;i<=star;i++) 이런 식으로 만들고 시작한다. (위 문제와 동일)
2. 공백 처리
첫째 줄(i=0일 때), 공백 4개, 별의 개수 1개
둘째 줄(i=1일 때), 공백 3개, 별의 개수 2개
일반화 시키면
공백: 입력값-i , 별 개수: i
규칙을 짤 때 한가지 팁은 기존의 변수들을 조건문에 잘 조합하는 것이다.
i값과 처음에 입력받은 값을 이용해서 일반식을 만들면 알고리즘을 짜기 훨씬 수월하다.
<코드>
#include <iostream>
using namespace std;
//별찍기 2
int main(){
int star;
cin >> star;
//전체 반복문, 별의 높이만큼, 공백이 네개부터니까 i는 1부터 시작
for (int i = 1; i <= star; i++){
//공백
for (int j = star - i; j> 0; j--){
cout << " ";
}
for (int k = 0; k < i; k++){
cout << "*";
}
cout << endl;
}
}
'알고리즘' 카테고리의 다른 글
13. 가장 많이 사용된 자릿수 (0) | 2020.04.03 |
---|---|
STL과 Vector&iterator (0) | 2018.09.02 |
[2440/2441] 별찍기 3-4 (0) | 2018.05.11 |
[1152] 단어의 개수 (0) | 2018.05.09 |
[2839] 설탕 배달 (0) | 2018.05.09 |