일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- IF
- 자료구조
- 변수
- 자바
- IFELSE
- 스캐너
- 1차원배열
- C언어
- 반복문
- Scanner class
- FOR문
- 유비쿼터스
- 파이썬프로그래밍기초
- IF문
- 백준
- Scanner
- java
- 배열
- Spring
- 백준알고리즘
- MySQL
- 기본
- error
- 알고리즘
- 데이터
- java프로그래밍
- for
- 스캐너클래스
- 함수
- 하드웨어
Archives
- Today
- Total
정리하고기록하자
백준 (JAVA) - 별찍기 - 2 (2349) 본문
반응형
백준 - 알고리즘 for문 별찍기 - 2 (2349) 문제
문제 :
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
먼저 입력한 숫자 만큼 반복문을 돌려야 한다.
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
for (int i = 1; i <= a; i++) {
}
첫번째 출력문을 보면
오른쪽에 * 1개 가 있다. 그럼 빈공간이 4개가 있어야 하고 * 은 1개가 있어야 한다.
그렇다면 첫번째 줄에는 입력한 숫자에서 1을 빼서 공백을 만들어야 한다.
for ( int i = 1 ; i <= N ; i++ ){
for( int j = 1 ; j <= N-i ; j++ ) {
print(" ");
}
}
첫번째 반복문에서 i 가 1이고 i <= 5 이므로
두번째 반복문에선 j 가 1이고 j <= 5 - 1 이므로
첫번째 출력문에 4개의 공백이 생긴다.
마지막으로 * 을 찍어야 하는데
for ( int t = 1 ; t <= i; t++){
print("*");
}
마지막으로 t 가 1 이고 t <= 5 이므로 조건이 성립되면 * 을 찍는다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
for (int i = 1; i <= a; i++) { // 입력한 값의 반복문
for (int j = 1; j <= a - i; j++) { // 공백을 찍기 위한 반복문
System.out.print(" ");
}
for (int k = 0; k < i; k++) { // * 을 찍기 위한 반복문
System.out.print("*");
}
System.out.println(); // 마지막으로 줄바꿈!
}
}
}
앞에 풀었던 별찍기 - 1 과 비슷하지만
공백을 찍어야 하는 반복문을 하나 더 추가 해서 출력해야 한다.
반응형
'백준 - 알고리즘' 카테고리의 다른 글
백준 (JAVA) - 최소,최대 (10818) (0) | 2021.11.15 |
---|---|
백준 (JAVA) - X보다 작은 수 (10871) (0) | 2021.11.09 |
백준 (JAVA) - 별찍기 -1 (2348) (0) | 2021.11.07 |
백준 (JAVA) - 기찍 N (2742) (3) | 2021.11.04 |
백준 (JAVA) - N 찍기 (2741) (0) | 2021.11.04 |