일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- pandas
- 디버깅
- 자바 실습
- 데이터베이스
- 머신러닝
- 선형회귀모델
- 자연수의성질
- 핵심프로젝트
- 데이터분석
- 데이터시각화
- c언어
- C++
- 정보처리기사필기
- 딥러닝
- numpy/pandas
- 중학수학
- 이수증
- 언리얼학습
- 요구사항확인
- 파이썬
- 텍스트마이닝
- 정보처리기사실기
- 자바
- 언리얼프로젝트
- html/css
- 데이터입출력구현
- Orange
- JSP/Servlet
- 선형분류모델
- Today
- Total
클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지
반복문 응용 3 - 사각형과 평행사변형 별 찍기 본문
어제는 삼각형 별 찍기 문제를 풀어보며 반복문을 어느 정도 이해했다. 오늘은 사각형 별 찍기와 삼각형 별 찍기에서 조금 어려운 피라미드 같은 특이한 모양을 찍어볼까 한다.
먼저 사각형 별 찍기가 다소 쉬워보이니 이 문제부터 도전해본다.
🐸 문제 1번
사각형 출력하기 <1352번>
❓ 문제
길이 n이 입력되면 길이가 n인 사각형을 출력하시오.
단, 사각형은 * 모양으로 채운다.
#include <stdio.h>
int main(void)
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
1번 문제는 삼각형 별 찍기를 할 수 있다면 충분히 풀 수 있는 문제였다. 오히려 그 문제보다 더 쉬운 것 같다.
n만큼 계속 증가하도록 하면 된다.
🐸 문제 2번
사각형 출력하기 2 <1356번>
❓ 문제
길이 n이 입력되면 다음과 같은 사각형을 출력한다.
예) n이 5일때
*****
* *
* *
* *
*****
#include <stdio.h>
int main(void)
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == 0 || i == n - 1 || j == 0|| j == n - 1)
{
printf("*");
}
else
printf(" ");
}
printf("\n");
}
return 0;
}
이번에는 속이 빈 사각형을 출력하는 건데 다소 어려운 문제이다.
처음에는 이중 for문 안에 또 다른 for문을 사용했으나 그렇게 하니 사각형이 중복으로 더 나타났다.
이럴 때는 if문을 사용해서 어떤 경우에 별이 찍히고, 찍히지 않는지를 만들어주어야 한다.
별이 찍히는 경우는 사각형의 i와 j가 0이나 n일 경우이다. 초기값을 1로 설정하면 n으로 하고, 0으로 하면 n-1로 해주면 된다.
🐸 문제 3번
별 계단 만들기 <1361번>
❓ 문제
n이 입력되면 n층의 별 계단을 출력하시오.
예) n= 5인 경우,
**
**
**
**
**
#include <stdio.h>
int main(void)
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = n; j > n-i; j--)
{
printf(" ");
}
for (int k = 0; k < n-1; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
별 계단을 찍는 문제는 빈 공간이 언제 생기는지 알면 쉽게 풀 수 있다. 공간이 하나씩 늘어나야 하므로 처음 받는 i가 하나씩 줄어들도록 해주었다.
근데 이 부분은 조금 헤깔린다. 처음에는 반대로 생각했었는데, 그렇게 하니 별 계단이 반대 방향으로 만들어졌다. 이건 다음에 한번 더 숙지해야 할 것 같다.
🐸 문제 4번
별 계단 만들기 2 <1361번 응용>
❓ 문제
n이 입력되면 n층의 별 계단을 반대로 출력하시오.
예) n= 5인 경우,
**
**
**
**
**
#include <stdio.h>
int main(void)
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
printf(" ");
}
for (int k = 0; k < n - 1; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
코드업 문제에는 없지만 반대로 하는 별계단도 만들어보았다.
🐸 문제 5번
평행사변형 출력하기 1 <1367번>
❓ 문제
평행사변형의 높이 n이 주어진다. 옆 면이 대각선으로 이루어지는 평행사변형을 출력한다. 단,공백은 왼쪽 위에 있다.
#include <stdio.h>
int main(void)
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n-i; j++)
{
printf(" ");
}
for (int j = 0; j < n; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
5번 문제는 별 계단 문제와 다르지 않아 보인다. 같은 문제라고 봐도 무방할 정도로 비슷했다.
코드업에서는 이런 이유로 이 문제는 만들지 않았던 것 같다. 그래도 스스로 문제를 만들어보며 공부해보면 응용력도 생기도 더 좋다고 생각한다.
마지막으로 평행사변형을 출력하는 조금 어려운 문제를 도전해보았는데 이건 너무 어려워서 이해조차 하지 못했다.
다음이 다시 풀어야 할 것 같다.
별 찍기 학습을 마치고
오늘은 이렇게 사각형과 평행사변형을 출력하는 문제를 풀어보았다. 사각형 안에 X자가 있는 모양과 어떤 모양으로 할지 선택한 후 각기 다른 모양을 찍는 평행사변형 문제는 아직 풀지 못했다.
내일 이 부분에 대해서 더 공부하고 해결해보려고 한다. 한 가지 더 학습해보고 싶은 부분이 있는데 언리얼 공부를 해야 할 것 같아 고민이 된다.
'알고리즘 및 자료 관리 > 알고리즘' 카테고리의 다른 글
조건문 응용 1 - if~else, switch문을 사용해 조건에 맞는 결과값 출력하기 (0) | 2024.08.24 |
---|---|
반복문 응용 4 - 피라미드 삼각형 별 찍기 (0) | 2024.08.24 |
약수, 배수와 소수 1 <백준 코딩테스트> - 약수와 배수 문제 풀기 (0) | 2024.08.24 |
반복문 응용 2 - 삼각형 별 찍기 (0) | 2024.08.24 |
반복문 응용 1 : 백준 코딩테스트 A + B의 합을 구하는 케이스 문제 (0) | 2024.08.24 |