Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 공통원소 구하기
- 가장 짧은 문자거리
- 보이는 학생
- 배열
- 아스키코드
- 알고리즘
- 10991
- 연속부분수열
- array
- 코테준비
- 모든행과열대각선의합
- 투 포인터
- 임시반장 정하기
- 점수계산
- GitHub #Commit #BaekJoon
- 백준
- 두 배열 합치기
- 누적 계산
- ArrayList
- 10992
- Pointer
- 최대 길이
- 등수구하기
- 큰 수 출력하기
- java
- 자바
- 뒤집은 소수
- Two Pointer
- 격자판
- 인프런
Archives
- Today
- Total
ezhoon
[백준] 2439_별 찍기2_Java 본문
2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net

⚠️주의사항
- 다중 for문 사용
- 빈칸은 공백으로 할 것
이번엔 별 찍기-1 에 비해서는 어려운 문제이긴하다. 처음 보는 사람이라면 어떻게 구현해야 할지 고민하게 될 것이다.
바로 문제풀이로 가서 설명해보겠습니다.
문제풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class for_2439 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N - i; j++) { // N이 5라고 쳤을 때 빈칸은 공백으로 남아야하므로 1 ~ N-i 사이 칸들은 공백으로 해준다.
sb.append(" ");
}
for (int j = 1; j <= i; j++) { // 공백 이후에 별이 찍힌다.
sb.append("*");
}
sb.append("\n");
}
System.out.println(sb);
}
}
N을 5로 입력했을 때

위와 같이 첫줄에는 4개의 공백이 생겨야 하고 그다음은 3개, 2개, 1개 가 생겨야 한다.
이런 내용의 for문을 이용할 때는 변하는 숫자들이 어떤 것들이 있나 생각해보면 쉽게 나온다.
N(별 최대 수) i(별 세로 길이) j(별 가로 길이) 라고 했을 때 우리는 j에서 공백이 4개 3개 ~ 1개 이런 식으로 나와야 하는 것이다.
여기서 4개의 공백일 때 N과 i의 값을 보면 N = 5, i = 1이다. 3개의 공백일때는 N = 5, i = 2 이런식으로 반복 된다.
즉 j를 N-i 까지 반복 시키면 되는 것이다.
'[Java] 백준 문제풀이 > for문' 카테고리의 다른 글
[백준] 10871_X보다 작은 수_Java (0) | 2022.01.05 |
---|---|
[백준] 2438_별 찍기-1_Java (0) | 2022.01.05 |
[백준] 11021_A+B-7_Java (0) | 2022.01.05 |
[백준] 2742_기찍N_Java (0) | 2022.01.05 |
[백준] 2471_N찍기_Java (0) | 2022.01.04 |
Comments