Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 11053
- Java #백준 #코딩테스트
- 7568
- Java #오븐시계 #백준
- 2447
- Spring #Java #Spring Boot
- 카카오 클라우드 스쿨
- sequelize
- 24479
- node
- 카카오클라우드스쿨
- SpringTokenizer
- 9020
- Java #코딩테스트
- 파이썬
- kakaocloudschool
- 코딩테스트
- Spring #Spring Boot #Java
- 11054
- Spring #Java #Spring Boot #싱글톤
- 백준
- python
- kakaocloud
- Spring #Java #Spring Boot #@BeforeEach #@AfterEach
- boj
- java
- Spring
- 알고리즘
- 1110
- 15552
Archives
- Today
- Total
YoungSoo
백준 - 별찍기-10(2447번 파이썬 풀이) 본문
이 문제는 골드 5정도의 문제로 도전을 했다가 실패해서 다른 분의 풀이를 보고 이해해서 도움이 됐으면 해서 글을
올려봅니다.
먼저 문제를 이해해야하는데 이 문제의 분류는 재귀함수로 분류되어 있어 함수를 만드는 방식으로 풀었고
저는 가장 작은 단위를 3일 때 위의 모양을 제일 작은 단위로 생각하고 이해하면 쉽게 이해했습니다.
9일때의 모양을 보면 가장 작은 단위로 생각한 모양을 *하나로 생각했을 때 가장 작은 단위의 도형이 된 것을
알 수 있었습니다.
import sys
input = sys.stdin.readline
def star(n):
if n == 1:
return['*']
stars = star(n//3)
arr = []
for s in stars:
arr.append(s*3)
for s in stars:
arr.append(s+' '*(n//3)+s)
for s in stars:
arr.append(s*3)
return arr
n = int(input())
print('\n'.join(star(n)))
먼저 star이라는 함수를 만들어 가장 작은 단위인 *을 1일 때 리턴해주고 stars를 만들어 1, 3, ... ,n을 재귀함수로
저장해주었고 반복문을 통해 형태를 가장 작은 단위부터 하나씩 도형을 만들어 배열에 저장해 마지막에 리턴하고
그 뒤에 문자열을 합치는 함수인 join을 통해 출력해주도록 했습니다.
'코딩테스트' 카테고리의 다른 글
백준 - 체스판 다시 칠하기(1018번 파이썬 풀이) (0) | 2022.12.14 |
---|---|
백준 - 덩치(7568번 파이썬 풀이) (0) | 2022.12.13 |
백준 - 골드바흐의 추측(9020 파이썬 풀이) (0) | 2022.12.03 |
백준 - 소수 찾기(1978번 파이썬 풀이) (0) | 2022.12.02 |
백준 - 달팽이는 올라가고 싶어(2896번 파이썬 풀이) (0) | 2022.12.01 |