유사한 3개의 별 찍기 문제입니다. 별이 출력되는 규칙을 잘 생각해서 코드를 짜는 게 중요한 것 같습니다. 개인적인 팁으로 공백을 출력하는 부분에서 실수가 나오면 실수를 찾기가 어려운 때도 있었습니다. (줄 마지막에 공백이 더 들어간 경우) 이때 공백을 출력하는 부분을 다른 문자로 바꿔서 확인해보면 쉽게 실수를 알아챌 수 있습니다. (예시) " " -> "@"
www.acmicpc.net/problem/2446
2446번: 별 찍기 - 9
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include < iostream>
using namespace std ;
int main() {
int n;
cin > > n;
int last= n* 2 ;
for (int i= 1 ;i< = n;i+ + )
{
for (int k= 1 ;k< i;k+ + )
{
cout < < " " ;
}
for (int j= 1 ;j< = last- (i- 1 )* 2 - 1 ;j+ + )
{
cout < < "*" ;
}
cout < < "\n" ;
}
for (int i= 1 ;i< n;i+ + )
{
for (int k= 1 ;k< = n- (i+ 1 );k+ + )
{
cout < < " " ;
}
for (int j= 1 ;j< = i* 2 + 1 ;j+ + )
{
cout < < "*" ;
}
cout < < "\n" ;
}
return 0 ;
}
cs
www.acmicpc.net/problem/10991
10991번: 별 찍기 - 16
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
www.acmicpc.net
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include < iostream>
using namespace std ;
int main() {
int n;
cin > > n;
for (int i= 1 ;i< = n;i+ + )
{
for (int k= 1 ;k< = n- i;k+ + )
{
cout < < " " ;
}
for (int j= 1 ;j< = i;j+ + )
{
if (j< i)
{
cout < < "* " ;
}
else
{
cout < < "*" ;
}
}
cout < < "\n" ;
}
return 0 ;
}
cs
www.acmicpc.net/problem/10992
10992번: 별 찍기 - 17
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
www.acmicpc.net
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include < iostream>
using namespace std ;
int main() {
int n;
cin > > n;
for (int i= 1 ;i< n;i+ + )
{
for (int j= 1 ;j< = n- i;j+ + )
{
cout < < " " ;
}
for (int t= 1 ;t< = i* 2 - 1 ;t+ + )
{
if (t= = 1 | | t= = i* 2 - 1 )
{
cout < < "*" ;
}
else
{
cout < < " " ;
}
}
cout < < "\n" ;
}
for (int k= 1 ;k< = (n* 2 - 1 );k+ + )
{
cout < < "*" ;
}
return 0 ;
}
cs
풀이
별이 출력되는 규칙을 찾는 게 제일 중요한 거 같습니다. 별, 공백이 출력되는 규칙을 줄의 번호와 연관 지어서 생각하는 게 문제 푸는데 도움이 됐습니다.