반응형
https://www.acmicpc.net/problem/2443
코드
#include <iostream>
using namespace std;
int main() {
int test;
cin>>test;
int m=1;
for(int i=0; i<test; i++){
for(int j=0; j<i; j++){
cout<<" ";
}
for(int j=i; j<test*2-m; j++){
cout<<"*";
}
m++;
cout<<"\n";
}
return 0;
}
|
cs |
풀이
공백 'o'에 대한 for문
#include <iostream>
using namespace std;
int main() {
int test;
cin>>test;
for(int i=0; i<test; i++){
for(int j=0; j<i; j++){
cout<<"*";
}
cout<<"\n";
}
return 0;
}
// test=5
// *
// **
// ***
// ****
|
cs |
공백 'o'은 해결되었고 이제 별과 공백 'x'에 대한 것만 남았다.
여기서 가장 중요한 코드는
for(int j=i; j<test*2-m; j++){
cout<<"*";
}
m++; 이것인데
int j=i는 i가 n번 반복한다면 그만큼 공백 'o'이 n번 생긴다는 뜻이다.
위에 표를 보면 i가 0일 때 별이 9개다.
그말은 즉, int j=i; i<test*2-m여기서 j는 0부터 8까지 별이 반복한다는 것이다.
m++은 i for문이 반복할수록 카운트되어 숫자가 커져, 'x'에대한 공백을 만들어낼 수 있다.
test*2에서 m을 빼서 별의 반복수를 줄이기 때문이다.
왼쪽에 있는 'o'공백은 i로 부터 만들고, 오른쪽에 있는 'x'는 test*2에서 m을 빼서 만들 수 있다.
결론 : 생각의 차이긴 한데, 별과 별 개수의 관점보다는 공백의 관점을 두면서 코드를 생각한다면 더 쉽게 작성할수 있다고 생각한다.
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 2935 c++ 소음 (0) | 2022.01.08 |
---|---|
[BaeKJoon/C++] 백준 5355 c++ 화성 수학 (0) | 2022.01.07 |
[BaeKJoon/C++] 백준16435 c++ 스네이크버드 (0) | 2021.07.22 |
[BaeKJoon/C++] 백준2920 c++ 음계 (0) | 2021.07.11 |
[BaeKJoon/C++] 백준5597 c++ 과제 안 내신 분..? (0) | 2021.07.11 |