반응형
-해법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in =new Scanner(System.in);
int n = in.nextInt();
for(int i=1;i<=n;i++) {
for(int j=1;j<=n-i;j++) {
System.out.print(" ");
}
for(int j=n;j>n-i;j--) {
System.out.print("*");
}
System.out.println();
}
in.close();
}
}
별 찍기 -1의 오른쪽 정렬 버전이다. 마찬가지로 행은 1~5까지 증가하며 열은 5부터 45, 345, 2345, 12345 순서로 *이 붙는다. 2중 for문에서 별을 찍지 않을 반복문과 찍을 반복문을 두고 생각하면 된다.
1. 별을 찍지 않는 for문
- 1행에 1,2,3,4열/ 2행에 1,2,3열/ 3행에 1,2열/ 4행에 1열 순으로 별이 찍히지 않는다. (=> for문의 종료조건이 감소)
- 행별로 구분되므로 행으로 사용되는 변수인 i를 활용해 조건을 설정. (j<=n-i)
2. 별을 찍는 for문
- 1행에 5열/ 2행에 4,5열/ 3행에 3,4,5열/ 4행에 2,3,4,5열/ 5행에 1,2,3,4,5, 열 순으로 별이 찍힌다. (=> for문의 종료 조건이 증가, 조건에 해당하는 열이 증가한다는 의미)
- 마찬가지로 행별로 구분되므로 i를 활용해 조건을 설정 (j> n-i)
이전엔 2중 for문에서 하나의 for문만을 안쪽에 두고 조건문을 통해 구분하여 별을 찍어봤기 때문에 이번엔 2개의 for문을 안쪽에 두어 풀어보았다. 솔직히 조건문을 이용하는 게 더 편하고 코드도 간결하다...
이러한 문제는 2중 for문에 사용하는 변수를 어떻게 활용하여 조건을 세우는지가 중요하다고 생각하며, 그렇기에 사람들마다 풀이법이 다양하게 나타난다고 생각한다. 그냥 찍히기만 하면 된다.
반응형