프로그래밍/백준

[C/C++] 백준 2439 별 찍기 - 2

정정훈훈 2022. 6. 7. 00:05
반응형

백준 2439번은 별 찍기 - 2 문제입니다.

 

https://www.acmicpc.net/problem/2439

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 

 

 

[ 별 문제 쉽게 푸는 법 TIP ]

 

1. 공백에 주의하자.

 

1) 쓸데 없는 공백이 있는지 확인하자. - '출력 형식이 잘못되었습니다'

백준 문제풀이에서는 쓸데 없는 공백을 출력할 경우 위와 같은 경고문을 띄운다.

전체적으로는 문제가 없어 보이더라도 꼼꼼이 확인해줘야 한다.

 

2) 별의 위치를 바꿔주기 위한 공백만 출력하도록 하자

코드를 짜다 보면, 별의 위치와 관련 없는 오른쪽 공백까지 출력하도록 코드를 짜게 되는 경우가 있다.

이 또한 '쓸데 없는 공백'으로 인식하여 '출력 형식이 잘못되었습니다'를 띄울 수 있다.

 

3) 공백은 임시로 'O'으로 출력되게 하자

위 1)과 2)의 문제를 해결하기 위한 방법으로 O나 #과 같은 문자로 가시적인 표현을 하면 된다.

다시 말해, printf(" "); 대신, printf("O");로 먼저 공백의 위치를 확인 후 printf(" ");로 바꿔주기만 하면 된다.

 

 

 

2. 반복문 설정에 주의하자.

 

1) 반복문의 큰 틀은 줄(Line)이다.

for(int i=0; i<n; i++){

    각 줄마다의 출력으로 접근

}

 

 

 

2) C/C++의 for 반복문의 경우, 변수를 미리 선언할 건지, 반복문 내에서 설정할 건지 결정하자.

 

int i, ... ;

for(i=0; i<n; i++){      // 미리 선언한다면, 변수의 값을 초기화하지 않고 값을 필요에 따라 적절히 활용 가능

    for(int k=0; k< ....  // 각 반복문마다 선언한다면, 변수의 값을 초기화함으로써 n차 반복문의 'n차 구분'의 의미로 활용 가능

 

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

int main() {
	int n;
	scanf("%d", &n);

	for (int i = 0; i < n; i++) { // 줄 구분의 의미로 변수 i 사용
		for (int k = n - i - 1; k > 0; k--) // 2차 반복문의 의미로 k 사용
			printf(" ");
		for (int k = 0; k < i + 1; k++)  // 반복문 내에서 선언 및 초기화하였으므로 문제 없음
			printf("*");
		printf("\n"); // 줄바꿈
	}
	return 0;
}

풀이에 오류가 있거나 빈약한 부분이 있다면 얼마든지 댓글 남겨주시기 바랍니다.

 

 

 

 

 

https://like-a-happy-cat.tistory.com/ 

 

키보드 꾹꾹이하는 대학생

 

like-a-happy-cat.tistory.com

 

 

https://blog.naver.com/snake6862

 

정훈 블로그 : 네이버 블로그

 

반응형