[백준 - 브3] 2441번 별 찍기 C언어
2441번: 별 찍기 - 4
첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
#include <stdio.h>
int main() {
int N = 0;
int j = 0;
int k = 0;
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
for (j = N; j > N-i; j--)
{
printf(" ");
}
for (k=N-i; k > 0; k--)
{
printf("*");
}
printf("\n");
}
return 0;
}
< 코드 해석>
생각보다 더 헷갈린 문제였따..
이중 포문을 사용을해서 5번 5줄을 이용하는 문제이다.
1 공백을 출력을 해줘야하는데 공백은 0개 ~ 4개까지 출력을 해줘야한다.
그런데 계속 원한는 출력이 안나왔다.
공백이 5개씩만 나오거나 아예출력이 안되거나 4321순으로 출력되는 난리가 났었다.
하지만 N-i를 해준 이유가 있다
N은 5로 값이 고정이고 처음에 j에게 N의 값을 넣어줬으니 5==5해서 공백이 출력이 안된다. 그다음에는 i의 값이 1증가해서 N-i이 4니깐 5>4로 한 번 공백이 출력된다. 그다음에 j값이 후위 연산자로 1줄어서 4로 되니 4==4 로 공백이 안나온다. 이렇게 하니 원하는 결과를 얻을 수 있었다.
2 *을 넣어주는 것은 생각보다 단순해서 금방해결했다. 공백이 힘들었다..
j와 반대로 해주었다 k는..
지금 생각해보면 j와 k가 반대일텐데 그것을 캐치하지 못했다
그래도 잘 마무리했다~^^
더 좋은 방식이 있으면 알려주시면 감사합니다
백준 2441 별 찍기 -4<실패> (tistory.com)
백준 2441 별 찍기 -4<실패>
<실패한 코드> => 추후에 재도전을 위한 기록 #include int main() { int N=0; int i=0; scanf("%d",&N); if(N>=1&&N<=100){ while(N!=0){ for(int a=0; a printf(" "); } for(i; i printf("*"); } --N; ++i; pri..
sebbb-in.tistory.com
실패 -> 성공