https://www.acmicpc.net/problem/2439
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
코드 140ms
using System;
using System.Text;
class Program {
static void Main()
{
int n = int.Parse(Console.ReadLine());
StringBuilder Input = new StringBuilder();
StringBuilder Output = new StringBuilder();
StringBuilder SpaceInput = new StringBuilder();
char charSpace = ' ';
SpaceInput.Append(charSpace, n);
string star = "*";
for (int i = 0; i < n; i++)
{
SpaceInput.Remove(0, 1);
Input.Append(star);
Output.Append(SpaceInput.ToString() + Input.ToString());
if(n-1==i)
{
break;
}
Output.Append("\n");
}
Console.WriteLine(Output.ToString());
}
}
오른쪽 정렬된 별을 순서대로 늘리며 출력하는 문제다. 우선 자연수 n을 입력받고, n만큼의 공백을 SpaceInput에 집어넣는다. 그럼 n만큼의 공백을 가진 문자열이 만들어졌다. 그리고 for문을 돌려서 오른쪽부터 별을 출력시킨다. 반복될때마다 공백이 하나씩 줄어들어야 별이 작성될 공간이 생김으로 공백을 Remove해준다. 그리고 똑같이 star를 1개씩 추가시키며 반복한다.
그러다 마지막에 \n(줄바꿈)이 불필요하게 한 번 더 될것을 방지하기 위해 if문으로 break를 실행시켜준다. 그러면 깔끔하게 별이 출력된다.
실행화면
정상작동중