티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 2438번 별찍기 - 1

https://www.acmicpc.net/problem/2438

 

2438번: 별 찍기 - 1

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

www.acmicpc.net

* 사용언어 : java, 자바

 

1. 문제

별(*)을 첫째 줄에 1개, 둘째 줄에 2개, N번째 줄에 N개 출력

 

2. 풀이

2중 for문을 사용하여 해결하는 문제입니다.

코딩 입문 후 처음 만나는 고비라고 할 수 있습니다.

 

2중 for문은 앞으로 알고리즘 문제 자주 사용될 패턴입니다.

BFS 등의 문제에서 2차원 map 표현 시 쓰이므로 이 문제는 반드시 이해하시고 넘어가셔야 합니다.

 

 

n이 3일 때를 가정해보겠습니다.

첫 번째 줄에 별 1개찍고 개행,

두 번째 줄에 별 2개찍고 개행,

세 번째 줄에 별 3개찍고 개행입니다.

 

일반화해보면, i 번째 줄에 별 i개 찍고 개행이죠.

이를 활용하여 2중 for문을 작성해보겠습니다.

 

1) 바깥쪽 for문의 인덱스(i, 아이)는 줄을 표현해줍니다.

i가 1이면 첫 번째 줄, i가 2면 두 번째 줄, i가 3이면 세 번째 줄입니다.

 

2) 안쪽 for문에서 이 인덱스를 사용하여, i 만큼 반복하면서 별을 출력합니다.

즉, 새로운 인덱스(j, 제이)로 for문을 도는데, 1부터 i까지 반복하는 겁니다.

 

 

이해가 안되시면 직접 코드를 보시면서 i가 1일 때, j는 어디까지 늘어나고, 어떻게 출력되는지 생각해보세요.

직접 코드를 손으로 적어보고, 생각해보시면 이해하는데 도움이 될 겁니다.

 

3. 코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.close();

		for (int i = 1; i <= n; ++i) {
			for (int j = 1; j <= i; ++j) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

* print 메서드는 println과 다르게 출력 후 개행하지 않습니다.

728x90
반응형
댓글