2022. 1. 15. 01:00ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/2439
2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
접근 방법 - 이중 반복문을 이용한 기본 문제 (별 찍기-1 문제의 변형)
백준의 2439번 문제는 이중 반복문을 응용하는 문제이며, 이는 별 찍기-1 문제의 변형 문제이기도 하다.
이런 문제에 아직 많이 익숙하지 않다면 아래의 링크를 참고해보는 편이 좋을 것이다.
https://smary-it.tistory.com/23
[백준 BOJ] 2438번 별 찍기-1 (C언어)
문제 설명 https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 접근 방법 - 이중 반복문을 이용한 기본 문제..
smary-it.tistory.com
위의 2438번 문제랑 차이점이 있다면, 이번엔 "공백의 출력"도 함께 신경 써줘야 한다는 점이다.
따라서 필자는, "공백 출력 -> 별 출력 -> 개행" 순서를 반복하며 출력을 진행하였다.
필자는 아래처럼 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 숫자(n)를 입력받는다.
2) 이중 반복문을 실행한다. (i: 행, j: 열)
열 번호 j가 행 번호 i보다 큰 경우엔 공백 출력, 아닐 경우엔 별을 출력한다.
여기서 행 번호 i는 0에서부터 n-1까지 점점 증가하는 변수이며, 열 번호 j는 n-1에서부터 0까지 점점 감소하는 변수이다.
(공백은 처음엔 n-1개 출력했다가, 행을 거듭하면서 출력하는 횟수를 1씩 줄인다.)
(반면에 별은 처음엔 1개 출력했다가, 행을 거듭하면서 출력하는 횟수를 1씩 늘린다.)
=> 이 과정을, 행 번호 i가 n과 같아지기 직전까지 실행한다.
3) 이중 반복문이 모두 수행되면, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
//백준 2439번 코드
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = n-1; j >= 0; j--) {
if (j > i) {
printf(" ");
}
else {
printf("*");
}
}
printf("\n");
}
}
제출 결과
(2021.12.08 백준 2439번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 2441번 별 찍기 - 4 (C언어) (0) | 2022.01.17 |
---|---|
[백준 BOJ] 2440번 별 찍기 - 3 (C언어) (0) | 2022.01.16 |
[백준 BOJ] 2438번 별 찍기 - 1 (C언어) (0) | 2022.01.13 |
[백준 BOJ] 2303번 숫자 게임 (C언어) (0) | 2022.01.13 |
[백준 BOJ] 2028번 자기복제수 (C언어) (0) | 2022.01.13 |