티스토리 뷰

알고리즘

[2438/2439] 별찍기 1-2

홍복치 2018. 5. 11. 00:17

 

별찍기 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
최근에 올라온 글
Total
Today
Yesterday