728x90
반응형
문제
첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
예제 입력 1
5 |
예제 출력 1
********* |
내가 작성한 코드 (C++ 성공)
#include <iostream>
using namespace std;
int main(){
int n;
int m = 1;
cin >> n;
for(int i=0; i<n; i++){
for(int k=0; k<i; k++){
cout << " ";
}
for(int j=i; j<2*n-m; j++){
cout << "*";
}
m++;
cout << "\n";
}
return 0;
}
정리
쉬운 줄 알았는데 생각보다 오래 걸린 문제다.
별찍기 문제는 정말 보기 쉬운 문제라서 그런지 여러 종류의 형태로 많은 예제가 만들어지는 것 같다.
그래서 그런지 내 코드보다 더 효율적으로 더 쉽게 작성된 코드가 많을 것 같다는 생각이 든다.
나는 일단 문제에 홀수개로 찍히는 것이 나와있기 때문에 참고해서 문제를 풀었다.
일단, 하나의 반복문으로 앞쪽에 빈칸을 만들어주었다.
int n;
int m = 1;
cin >> n;
for(int i=0; i<n; i++){
for(int k=0; k<i; k++){
cout << " ";
}
}
이렇게 반복문으로 앞 쪽에 빈칸을 만들어주었다.
그리고 문제에 나와있는 공식을 그대로 이용해서 반복문을 하나 더 만들었는데
int n;
int m = 1;
cin >> n;
for(int i=0; i<n; i++){
for(int k=0; k<i; k++){
cout << " ";
}
for(int j=i; j<2*n-m; j++){
cout << "*";
}
m++;
cout << "\n";
}
문제에 나와있는 공식을 그대로 가져와서 출력해주었다.
빈칸을 만들어준 이후에 문제에 공식을 그대로 가져와 그만큼 출력해주었고
m 변수를 사용해서 갯수를 조절해주었다.
그랬더니 원하는 결과를 출력할 수 있었다.
다른 사람들이 작성한 코드를 한번 봐야할 것 같다.
난 정말 하드하게 코딩했다고 생각하는데 더 잘 짜여진 코드를 확인해보면 좋을 것 같다.
728x90
반응형
'알고리즘 > BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 17173번 : 배수들의 합 (0) | 2019.07.21 |
---|---|
[백준 알고리즘] 2941번 : 크로아티아 알파벳 (0) | 2019.07.14 |
[백준 알고리즘] 1316번 : 그룹 단어 체커 (0) | 2019.07.14 |
[백준 알고리즘] 2942번 : 퍼거슨과 사과 (0) | 2019.07.10 |
[백준 알고리즘] 5622번 : 다이얼 (0) | 2019.07.10 |