2022. 1. 20. 01:08ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/2444
2444번: 별 찍기 - 7
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
접근 방법 - 이중 반복문을 이용한 응용 문제 (별 찍기-5, 별 찍기-6 문제의 혼합)
백준의 2444번 문제는 이중 반복문을 응용하는 문제이며, 이는 별 찍기-5 문제와 별 찍기-6 문제의 혼합된 형태이기도 하다.
아래에 기재된 두 문제의 코드를 한번 참고해보는 것이 좋을 것이다.
https://smary-it.tistory.com/27
[백준 BOJ] 2442번 별 찍기 - 5 (C언어)
문제 설명 https://www.acmicpc.net/problem/2442 2442번: 별 찍기 - 5 첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www.acm..
smary-it.tistory.com
https://smary-it.tistory.com/28
[백준 BOJ] 2443번 별 찍기 - 6 (C언어)
문제 설명 https://www.acmicpc.net/problem/2443 2443번: 별 찍기 - 6 첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www...
smary-it.tistory.com
이 문제의 경우엔 가운데 행을 중심으로 하여, 2가지의 경우로 나누어 출력을 수행하는 것이 좋다.
필자는 아래처럼 코드를 작성하고 문제를 해결하였다.
코드의 실행 순서
1) 숫자(n)를 입력받는다.
2) 이중 반복문을 실행한다. (i: 행, j: 열)
(1) i에 따른 조건문 2개를 작성한다. 행 번호 i가 n보다 작거나 같은 경우, i가 n보다 큰 경우로 나눈다.
여기에서, a는 공백 출력을 제어하는 변수, b는 별 출력을 제어하는 변수이다.
(i가 n보다 큰 경우에는, i가 n보다 작거나 같은 경우의 수식 중 "i" 부분을 "n*2-i"로 바꾸어 실행하면 된다.)
(2) a와 b가 각각 정해진 다음엔, 공백을 출력하는 반복문과 별을 출력하는 반복문 2개를 순차적으로 작성한다.
=> 이 과정을 행 번호 i가 n*2와 같아지기 직전까지 실행한다.
3) 이중 반복문이 모두 수행되면, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
//백준 2444번 코드
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i < n*2; i++) {
int a, b;
if (i <= n) { a = i; b = i * 2 - 1; }
else { a = n * 2 - i; b = (n * 2 - i) * 2 - 1; }
for (int j = n; j > a; j--) {
printf(" ");
}
for (int k = 0; k < b; k++) {
printf("*");
}
printf("\n");
}
}
제출 결과
(2021.12.23 백준 2444번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 2480번 주사위 세개 (C언어) (0) | 2022.01.20 |
---|---|
[백준 BOJ] 2475번 검증수 (C언어) (0) | 2022.01.20 |
[백준 BOJ] 2443번 별 찍기 - 6 (C언어) (0) | 2022.01.20 |
[백준 BOJ] 2442번 별 찍기 - 5 (C언어) (0) | 2022.01.17 |
[백준 BOJ] 2441번 별 찍기 - 4 (C언어) (0) | 2022.01.17 |