https://www.acmicpc.net/problem/2439
문제
> 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
> 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
*
**
***
****
*****
접근
첫 반복문으로 N까지 돌며 각 줄에 대해 출력한다.
내부에서의 첫번째 반복문으로 N-1, N-2..0순서로 공백을 출력하고 뒤에 다음 반복문으로 1..2..3...N순으로 별을 붙인다.
문제해결
> 수를 입력받기 위해 bufferedreader를 선언해 주고 N에 parseInt를 통해 br에 들어온 입력을 받아 정수로 저장한다.
> 출력을 누적해서 한번에 뿌려주기 위해 Stringbuilder를 선언한다.
> 총 N줄에 대한 큰 반복문을 만들고 1번째 줄부터 N번째 줄까지 출력을 위해 반복범위를 잡아준다.
> 공백을 위한 반복문을 0부터 i와 t의 합이 N보다 작아질 때까지 해준다. 첫줄에 0+1로 부터 4까지 총 4개, 1+1부터 4까지 총 3개...총 0개까지 출력이된다.
> 별을 찍기위해 0부터 t까지 반복한다. 그럼 i는0으로 1개, i는 0,1로 2개, ...5개까지 출력이 된다.
> 위 출력을 다 sb에 저장해두고 한줄이 끝날 때마다 줄바꿈도 sb에 저장한다.
> N줄 출력이 끝나면 sb를 출력한다.
코드
import java.io.*;
import java.util.*;
public class Main
{
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 t = 1; t <= N; t++)
{
for(int i = 0; i+t < N; i++) sb.append(' ');
for(int i = 0; i < t; i++) sb.append('*');
sb.append("\n");
}
System.out.print(sb);
}
}

후기
c++만하다가 자바를 하려니 하나도 생각이 안났다. 입력받는거, 전처리, 변수처리, 출력 등 갖가지 문법이 초면같다. 열심히 기본부터 해보자