본문 바로가기

알고리즘

[백준] 2438번: 별 찍기 - 1(java, python)

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

 

2438번: 별 찍기 - 1

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

www.acmicpc.net


💡 주의 사항

for문을 정의할 때, 변수를 어떻게 지정할지 고민해볼 것


🗒 풀이

java

import java.util.Scanner;

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

        for (int i = 1; i <= num; i++) {
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
  • 두 번의 for문을 돌리는데, 입력받은 num만큼 for문을 돌려야 하니 첫 번째(바깥) for문은 num만큼 돌림. 이 때, i를 1부터 지정한 이유는 두 번째 for문때문
  • 두 번째 for문을 보면 j가 첫번째 for문의 i 변수만큼 돌게 설정됐는데, 이는 순차적으로 1, 2, 3, ... 증가시키기 위함
  • 즉, 첫 번째 변수 i를 1부터라고 지정하지 않았다면, 첫 번째 줄이 빈 줄이 들어갔을 것임
  • 두 번째 for문을 돌고 나서는 한 줄을 띄어줘야하기 때문에 System.out.println(); 을 추가

python

a = int(input())
for i in range(1, a+1):
    print('*' * i)
  • 입력받은 변수 a 만큼 범위를 만들기 위해 range() 함수를 사용함. 이 때, 1부터 순차적으로 접근해야하므로 range(1, a+1)로 지정함에 유의할 것
  • java는 python의 '*' * i 처럼 string 연산이 쉽게 안됨