나무위키 문서에 별을 찍는 것에 대한 내용은 나무위키:내 문서함 문서
, 별점에 대한 내용은 별점 문서
참고하십시오.1. 개요
대표적인 프로그래밍 문제 중 하나다. 숫자가 입력으로 주어지면, 그 숫자에 해당되도록*
으로 이루어진 문자열을 출력하면 된다. 화면에 별을 그린다고 생각하면 별 찍기라는 이름도 납득할 수 있다. 대개는
*
뿐만 아니라 공백 문자, 개행 문자도 이용하게 된다. 입력에 따라 이 세 가지 문자들이 어떤 규칙으로 출력되는지를 알아내는 것이 문제 해결의 핵심이다. 간단한 별 찍기라도 반복문이 필요하고, 복잡한 별 찍기는 조건문 또는 재귀까지 사용할 것을 요구하므로 훌륭한 프로그래밍 연습 문제라고 할 수 있다. 1.1. 왜 예제가 없는가?
이 문서에 있는 문제는 수많은 블로그 및 코딩 입문서에 이미 풀이가 실려 있으므로, 중복해서 정답을 적는 것은 헛된 일이다. 또한, 스스로 답을 찾아내고자 하는 사람들을 위한 문서가 존재해야 한다. 구체적인 코드가 없는 대신 모든 문제에 힌트가 붙어 있으므로 참고하면 좋겠다.2. 예제
2.1. 가로로 별 찍기
입력 | 1 | 2 | 3 | 4 | 5 | ... |
출력 | * | ** | *** | **** | ***** | ... |
- [ 힌트 ]
- 정수가 입력으로 주어지면, 그 수만큼
*
을 출력하면 된다.
Python 유저라면"*"*숫자
등을 이용할 수도 있지만, 기본적으로 1중 반복문을 이용하여 풀 수 있는 문제다.
2.2. 세로로 별 찍기
입력 | 1 | 2 | 3 | 4 | 5 | ... |
출력 | * | * * | * * * | * * * * | * * * * * | ... |
- [ 힌트 ]
- 화면에
*
만 보인다고 해서*
만 출력되는 것은 아니다. 각*
과*
사이에는 개행 문자라고 불리는 문자가 출력되었다.
백문이 불여일견, 개행 문자가 어떤 역할을 하는지는 각자 실험해보자."Hello, \nWorld!"
,"He\nllo, \nWor\nld!"
,"H\n\nello, \nWo\nrld!"
등의 다양한 문자열을 출력해보면 규칙을 발견할 수 있을 것이다.
2.3. 정사각형 찍기
입력 | 1 | 2 | 3 | 4 | 5 | ... |
출력 | * | ** ** | *** *** *** | **** **** **** **** | ***** ***** ***** ***** ***** | ... |
- [ 힌트 ]
- 이 문서에 있는 문제 중 처음으로 2중 반복문을 사용해야 한다. 반복문을 하나 만들어서, 그 안에 "가로로 별 찍기" 코드를 적절히 배치한다면 이 문제를 해결할 수 있을 것이다.
2.4. NE 대각선 찍기
2.5. NS 대각선 찍기
2.6. 내리막 계단 찍기
입력 | 1 | 2 | 3 | 4 | 5 | ... |
출력 | * | * ** | * ** *** | * ** *** **** | * ** *** **** ***** | ... |
- [ 힌트 ]
- 한계단씩 내려갈수록 계단 단계와 같은 갯수의 별이 출력이 된다. 정사각형 찍기와 동일한데 반복문의 종료조건을 잘 생각해보면 문제 해결에 도움이 될 것이다.
2.7. 오르막 계단 찍기
- [ 힌트 ]
- "내리막 계단 찍기" 코드와 별로 다른게 없다. 다만 공백(U+0020) 문자를 처음으로 활용하게 된다.
3. 심화
3.1. 시어핀스키 삼각형 찍기
3.2. 시어핀스키 사각형 찍기
3.3. 망델브로 집합 찍기
- [ 힌트 ]
- 망델브로 집합을 별로 찍기 위해서는 그 집합이 무엇인지에 대한 수학적 이해가 필요하다. 이 문서에 있는 별 찍기 중 가장 어려운 난이도라고 할 수 있다.
4. 여담
- 별 찍기의 역사는 아직 없다.
- Baekjoon OJ에서 "별 찍기"라고 검색하면 다양한 문제들을 만날 수 있다. 나무위키를 보고 만든 풀이가 정말 맞는지 검증하는 것이 실력 향상에 매우 도움될 것이다.