728x90
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
예제입력 |
예제출력 |
5 | * ** *** **** ***** |
문제풀이
해당 문제는 일반 별 찍기인 1, 2, 3, 4, 5로 상승하는 것을 응용하면 되겠다.
추가 팁으로는 마지막번째 별을 제외하고는 앞에 공백이 있다는 것을 유념해야 한다.
위 예제 출력을 직접적으로 보자면
00001
00011
00111
01111
11111
다음과 같이 이루어져 있다.
첫번째 열의 경우 5번의 반복을 하되, 4번의 공백을 1번의 별표를 표시해야 한다.
순서대로 두개의 값이 증감을 하게되는데 처음하는 사람은 고민을 잘 해야한다.
설명이 잘 될지 모르겠지만 한번 해보겠다...
- 우선, 1~ 5까지의 반복할 for문을 만든다
- 해당 for문에서 공백을 표시할 for문, 별을 표시할 for문을 각각 만든다.
- 공백은 어떻게 표시할까?
공백을 표시할 for문은 첫째줄부터 예시 ( 5-1 -> 5-2 -> 5-3 -> 5-4 )와 같이 이루어져야 한다.
떠올려야 할 것이 있다.
1) 몇 번 반복할 것인가에 대해서는 Scanner로 변수 N으로 받는다.
2) 1번에서 만든 for문은 1 ~ 5까지 상승한다
위 두가지 사항을 조합해 보면 예시와 같이 표현이 가능하다. - 별표는 어떻게 표시할까?
별표는 첫째줄부터 1 -> 2 -> 3 -> 4 -> 5 와 같이 늘어나기 때문에
위에서 사용했던 1번을 동일하게 재사용 해주면 되는데,
문제는 해당 상승하는 숫자를 빼줄 값이 없기 때문에 조건문에서 반대로 비교하도록 한다. - System.out.println()을 통해 개행(\n)을 첨부하는 것을 잊지말자
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 1 ; i <= n; i++){
for(int j = i; j < n; j++){
System.out.print(" ");
}
for(int k = i; k > 0; k--){
System.out.print("*");
}
System.out.println();
}
}
}
728x90
'Etc > problem solving' 카테고리의 다른 글
백준 1110, 더하기 사이클 (0) | 2021.10.08 |
---|---|
백준 10951, A+B - 4 (0) | 2021.10.06 |
백준 10952, A+B - 5 (0) | 2021.10.06 |
백준 10871, X보다 작은 수 (0) | 2021.10.06 |
백준 15552번, 빠른 A+B (0) | 2021.10.05 |