데이터분석가 | 취준생

[백준] 2438번 별찍기 -1 본문

백준

[백준] 2438번 별찍기 -1

su_hyeon 2025. 5. 15. 18:55

백준의 해당 문제는 링크를 통해 들어가서 풀어볼 수 있다.

 

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

 

문제

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

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

정답

n = int(input())

for i in range(1,n+1,1):
    print('*' * int(i))

 

공부한 내용

이 문제는 바로 맞출 수 있었다. 반복문 for을 활용해서 코드를 짜면 바로 원하는 출력결과가 나왔다.

지금 이렇게 복기하는 이유는 n을 지정할 때의 방식에서 헷갈리는 부분이 있었기 때문이다.

n = int(input())

n = map(int, input())

 

입력값을 줄 때, 사용했던 코드가 위의 두가지인데, 이 문제에서는 map을 이용해서 코드를 돌려보니 에러가 났다.

그 이유는 입력값을 하나만 받을 때, map에서는, '5'는 그대로 map(int, ['5']) 로 나오지만, '12'는 map(int, ['1', '2'])로 분리되어져 나오게 되고, 두자리수나 세자리수 등 자리수가 많아질수록 하나의 숫자가 아니라 분리되서 객체를 생성하기 때문에 위 문제에서 반복문을 돌릴때 에러가 발생하는 것이다.

 

그래서 map 객체를 사용해서 입력값을 받을 때에는 입력값이 두 개 이상일때만 사용하는 것이 좋다 !!

 

int(input())  ===> 입력값이 하나일 때

map(int, input())    ===> 입력값이 여러개일 때

 

+) 입력값이 여러개일 때 map 사용법

a, b = map(int, input().split())

 

'백준' 카테고리의 다른 글

[백준] 2562번 최댓값  (0) 2025.05.21
[백준] 10952번 A+B - 5  (0) 2025.05.17
[백준] 10871번. x보다 작은 수  (0) 2025.05.17
[백준] 8393번 합  (0) 2025.05.17
[백준] 10869번 사칙연산  (0) 2025.05.14