반응형
2442번: 별 찍기 - 5
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.
www.acmicpc.net
2442번 별찍기는...굉장히 쉬울거라고 처음에 생각했다..ㅎㅅㅎ 💫
하지만 어떤 이유에서인지 계속 오류가 나는 것..이다! 왜일까 생각을 했다...
제일 큰 N의 범위가 100이니 이로 테스트해도 정상적으로 별이 출력됐는데 백준에 올리면 런타임 에러가 떴다..
런타임 에러는 대부분 인덱스를 잘못 접근 했을 때 나는 오류인데..ㅠ3ㅠ
결국 알게됐는데 vector의 범위가 처음에 101로 했어서 그렇다 . N번째 줄에는 최대 2*N-1개의 별이 찍히게 되는데 이를 고려하지 못하여 그렇게 됐달까^_^
또 ...질문게시판을 보니 출력오류로 사람들이 혼란을 겪고 있는 것을 알 수 있었다.. 출력 방식을 확인할 때 공백어디까지 출력해야하는지 확인하려면 아래와 같이 "드래그" 해보면 된다!
그러면 한줄을 2*N-1 만큼 출력하지 않는 다는 것을 알 수 있다. ㅎㅅㅎ
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> stars(200, " ");
int main()
{
int N;
cin >> N;
int starLen = (2 * N - 1);
int mid = (2 * N - 1) / 2;
int left = mid, right = mid;
stars[mid] = "*";
while (N--) {
for (int i = 0; i <= right; i++)
cout << stars[i];
cout << "\n";
left--;
right++;
if (left < 0 || right >= starLen)
return 0;
stars[left] = "*";
stars[right] = "*";
}
return 0;
}
반응형
'Algorithm 💫 > Problem Solving' 카테고리의 다른 글
[백준 2522번 별찍기 - 12/ C++] (0) | 2021.01.04 |
---|---|
[백준 2445번 별찍기 - 8/ C++] (0) | 2021.01.04 |
[백준 2438번 별찍기 - 1/ C++] (0) | 2021.01.01 |
[백준 11720번 숫자의 합/ C++] (0) | 2021.01.01 |
[백준 11718번 그대로 출력하기/ C++] (0) | 2021.01.01 |
댓글