[프로그래머스][C++] 직사각형 별찍기
직사각형 별찍기
문제 링크
분석
입력을 받고, 조건에 따라 출력하는 문제입니다.
2중 반복문을 사용해 하나씩 출력할 수 있습니다.
또는 반복문 1개만 사용하고, 출력하는 줄의 별을 한번에 출력하는 방법이 있습니다.
풀이
2중 반복문을 사용하는 방법입니다.
#include <iostream>
int main(void) {
int a;
int b;
std::cin >> a >> b;
for (int i = 0; i < b; ++i)
{
for (int j = 0; j < a; ++j)
{
std::cout << '*';
}
std::cout << std::endl;
}
return 0;
}
std::cin >> a >> b
는 입력을 받습니다.
a
는 가로길이, b
는 세로길이이므로 위와 같은 2중 반복문이 나옵니다.
std::cout << '*'
에서 별을 하나씩 출력합니다.
std::cout << std::endl
에서 줄바꿈을 해줍니다.
한 줄의 별은 한번에 출력하는 방법입니다.
#include <iostream>
#include <string>
int main(void) {
int a;
int b;
std::cin >> a >> b;
std::string str;
str.append(a, '*');
for (int i = 0; i < b; ++i)
{
std::cout << str << std::endl;
}
return 0;
}
str.append(a, '*')
는 문자열에 a
개 별을 문자열 끝부분부터 넣어줍니다.
std::cout << str << std::endl
는 str
변수에 있는 별들을 출력하고, 줄바꿈을 해줍니다.
성능 요약
2중 반복문을 사용한 성능입니다.
테스트 1 〉 통과 (2.25ms, 4.13MB)
테스트 2 〉 통과 (2.77ms, 4.2MB)
테스트 3 〉 통과 (2.00ms, 4.14MB)
테스트 4 〉 통과 (2.77ms, 4.15MB)
테스트 5 〉 통과 (1.91ms, 4.16MB)
테스트 6 〉 통과 (2.56ms, 3.63MB)
테스트 7 〉 통과 (2.62ms, 4.12MB)
테스트 8 〉 통과 (3.59ms, 4.01MB)
테스트 9 〉 통과 (4.55ms, 4.2MB)
테스트 10 〉 통과 (2.51ms, 4.14MB)
테스트 11 〉 통과 (3.20ms, 4.19MB)
반복문을 하나만 사용해 한 줄의 별은 한번에 출력한 성능입니다.
테스트 1 〉 통과 (2.10ms, 4.08MB)
테스트 2 〉 통과 (1.96ms, 4.21MB)
테스트 3 〉 통과 (2.90ms, 4.18MB)
테스트 4 〉 통과 (2.60ms, 3.68MB)
테스트 5 〉 통과 (2.12ms, 4.14MB)
테스트 6 〉 통과 (2.06ms, 3.68MB)
테스트 7 〉 통과 (4.94ms, 4.2MB)
테스트 8 〉 통과 (3.94ms, 4.12MB)
테스트 9 〉 통과 (3.13ms, 4.14MB)
테스트 10 〉 통과 (3.40ms, 4.14MB)
테스트 11 〉 통과 (3.12ms, 4.21MB)
댓글남기기