https://school.programmers.co.kr/learn/courses/30/lessons/12969
오늘은.. 정말 정리해야겠다 싶어서 이 문제에 대한 코드를 정리해본다.
✳️ 태초마을 코드
태초마을 코드는 다음과 같다.
a, b = map(int, input().strip().split(' ')
print(a + b)
이게 뭔 갑자기 함수 solution 제작해오다가 냅다 a, b로 변수 지정해서 여러 함수를 체인걸어서 작성해 놓으시니 어쩌라고 싶었다... ㅋㅋㅋ,... 아니 그니까 input은 어디서 튀어나왔고 strip은 왜 있는거고 split은 또 어쩐 일이세요? 이런 생각을 하면서 기존에 주어진 코드를 생각하는 것만으로도 씅질이 잔뜩 나있었음 ㅎ
암튼 코드를 하나 하나 뜯어보자면..
1️⃣ input()
- 사용자로부터 입력을 받아들임
- 예시로 "5 3" 이라고 입력하면 이 입력값은 문자열로 처리됨
2️⃣ strip()
- 문자열의 양 끝에서 공백(또는 다른 지정된 문자)을 제거
- 사용자가 " 5 3 "을 입력하면, strip()은 "5 3"으로 변환
3️⃣ split()
- 문자열을 공백을 기준으로 분리하여 리스트로 생성
- "5 3"이라는 문자열은 split(' ')에 의해 ['5', '3']이라는 리스트로 변환
- 기본적으로 split() 메서드는 공백(스페이스)을 기준으로 문자열을 분리
4️⃣ map(int, ...)
- 두 번째 인자로 주어진 리스트의 각 요소에 대해 첫 번째 인자로 주어진 함수를 적용
- int 함수를 사용하여 문자열 리스트 ['5', '3']의 각 요소를 정수형으로 변환
- 결과는 map 객체로 반환되며, 이를 리스트나 다른 변수로 변환할 수 있음
5️⃣ a, b = ...
- 위 과정에서 생성된 두 개의 정수값을 변수 a와 b에 각각 할당
- 리스트 언패킹(unpacking)을 통해 리스트의 첫 번째 요소는 a에, 두 번째 요소는 b에 할당
✳️ 최종 코드
# a, b를 입력 받기
a, b = map(int, input().strip().split(' '))
# b줄 동안 반복
for i in range(b):
# 각 줄마다 a개의 *을 출력
print('*' * a)
- range(b)에 의해 b번 반복할 준비
- 첫 번째 반복에서 i = 0이고, print('*' * a)가 실행됩니다. 이때 a = 5라면 *****가 출력
- 두 번째 반복에서 i = 1이고, 다시 print('*' * a)가 실행됩니다. 또 *****가 출력
- 세 번째 반복에서 i = 2이고, 또 다시 *****가 출력
- 이 과정은 b번 반복되며, 각 줄마다 a개의 별이 출력
1️⃣ range(b)
- range(b)는 0부터 b-1까지의 정수들을 생성하는 함수
- b = 3이면 range(3)은 [0, 1, 2]라는 값을 생성
- 이 range 객체는 반복문에서 몇 번 반복할지 결정하는 데 사용
7️⃣ for i range(b)
- range(b)에서 생성된 숫자들을 하나씩 꺼내 i에 할당하고, i의 값을 이용해 반복문을 실행
- b = 3이면 i는 첫 번째 반복에서 0, 두 번째 반복에서 1, 세 번째 반복에서 2의 값을 갖게 됨
3️⃣ print('*' * a)
- 별(*)을 출력하는 부분
- '*' * a는 * 문자를 a번 반복해서 문자열로 생성
'📒 Today I Learn > 🐍 Python' 카테고리의 다른 글
[Python] 유클리드 호제법을 이용한 최대공약수와 최소공배수 구하기 (0) | 2024.09.03 |
---|---|
[Python] input() (0) | 2024.09.03 |
[Python] 문자? 숫자? 판별 함수 (0) | 2024.08.29 |
[Python] enumerate 함수 (0) | 2024.08.28 |
[Python] find(), index() (0) | 2024.08.27 |