나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-02-12 03:03:05

별 찍기

별찍기에서 넘어옴
파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 != null
, ''''''}}}{{{#!if 넘어옴3 != null
, ''''''}}}{{{#!if 넘어옴4 != null
, ''''''}}}{{{#!if 넘어옴5 != null
, ''''''}}}{{{#!if 넘어옴6 != null
, ''''''}}}{{{#!if 넘어옴7 != null
, ''''''}}}{{{#!if 넘어옴8 != null
, ''''''}}}{{{#!if 넘어옴9 != null
, ''''''}}}{{{#!if 넘어옴10 != null
, ''''''}}}은(는) 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 나무위키 문서에 별을 찍는 것}}}에 대한 내용은 [[나무위키:내 문서함]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[나무위키:내 문서함#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[나무위키:내 문서함#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html 별점}}}에 대한 내용은 [[별점]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[별점#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[별점#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
나무위키 문서에 별을 찍는 것: }}}[[나무위키:내 문서함]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[나무위키:내 문서함#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[나무위키:내 문서함#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
별점: }}}[[별점]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[별점#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[별점#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

1. 개요
1.1. 왜 예제가 없는가?
2. 예제
2.1. 가로로 별 찍기2.2. 세로로 별 찍기2.3. 정사각형 찍기2.4. NE 대각선 찍기2.5. NS 대각선 찍기2.6. 내리막 계단 찍기2.7. 오르막 계단 찍기
3. 심화4. 여담

1. 개요

대표적인 프로그래밍 문제 중 하나다. 숫자가 입력으로 주어지면, 그 숫자에 해당되도록 *으로 이루어진 문자열을 출력하면 된다. 화면에 별을 그린다고 생각하면 별 찍기라는 이름도 납득할 수 있다.

대개는 *뿐만 아니라 공백 문자, 개행 문자도 이용하게 된다. 입력에 따라 이 세 가지 문자들이 어떤 규칙으로 출력되는지를 알아내는 것이 문제 해결의 핵심이다. 간단한 별 찍기라도 반복문이 필요하고, 복잡한 별 찍기는 조건문 또는 재귀까지 사용할 것을 요구하므로 훌륭한 프로그래밍 연습 문제라고 할 수 있다.

1.1. 왜 예제가 없는가?

이 문서에 있는 문제는 수많은 블로그 및 코딩 입문서에 이미 풀이가 실려 있으므로, 중복해서 정답을 적는 것은 헛된 일이다. 또한, 스스로 답을 찾아내고자 하는 사람들을 위한 문서가 존재해야 한다. 구체적인 코드가 없는 대신 모든 문제에 힌트가 붙어 있으므로 참고하면 좋겠다.

2. 예제

2.1. 가로로 별 찍기

입력12345 ...
출력*************** ...
[ 힌트 ]
정수가 입력으로 주어지면, 그 수만큼 *을 출력하면 된다.
Python 유저라면 "*"*숫자등을 이용할 수도 있지만, 기본적으로 1중 반복문을 이용하여 풀 수 있는 문제다.

2.2. 세로로 별 찍기

입력12345 ...
출력**
*
*
*
*
*
*
*
*
*
*
*
*
*
...
[ 힌트 ]
화면에 *만 보인다고 해서 *만 출력되는 것은 아니다. 각 ** 사이에는 개행 문자라고 불리는 문자가 출력되었다.
백문이 불여일견, 개행 문자가 어떤 역할을 하는지는 각자 실험해보자. "Hello, \nWorld!", "He\nllo, \nWor\nld!", "H\n\nello, \nWo\nrld!" 등의 다양한 문자열을 출력해보면 규칙을 발견할 수 있을 것이다.

2.3. 정사각형 찍기

입력12345 ...
출력***
**
***
***
***
****
****
****
****
*****
*****
*****
*****
*****
...
[ 힌트 ]
이 문서에 있는 문제 중 처음으로 2중 반복문을 사용해야 한다. 반복문을 하나 만들어서, 그 안에 "가로로 별 찍기" 코드를 적절히 배치한다면 이 문제를 해결할 수 있을 것이다.

2.4. NE 대각선 찍기

2.5. NS 대각선 찍기

2.6. 내리막 계단 찍기

입력12345 ...
출력**
**
*
**
***
*
**
***
****
*
**
***
****
*****
...
[ 힌트 ]
한계단씩 내려갈수록 계단 단계와 같은 갯수의 별이 출력이 된다. 정사각형 찍기와 동일한데 반복문의 종료조건을 잘 생각해보면 문제 해결에 도움이 될 것이다.

2.7. 오르막 계단 찍기

[ 힌트 ]
"내리막 계단 찍기" 코드와 별로 다른게 없다. 다만 공백(U+0020) 문자를 처음으로 활용하게 된다.

3. 심화

3.1. 시어핀스키 삼각형 찍기

3.2. 시어핀스키 사각형 찍기

3.3. 망델브로 집합 찍기

[ 힌트 ]
망델브로 집합을 별로 찍기 위해서는 그 집합이 무엇인지에 대한 수학적 이해가 필요하다. 이 문서에 있는 별 찍기 중 가장 어려운 난이도라고 할 수 있다.
여담으로, 최초로 공개된 망델브로 집합의 그림은 별 찍기로 구현되었다. 사진

4. 여담