물리 곱셈표 인쇄


40

사각형에는이 멋진 속성이 있습니다 사각형은 정확히 문자 로 구성됩니다 !n×mn×m

A .. 더 흥미로운 특성은 곱셈 테이블에서 사각형을 잘 정렬 할 수 있다는 것입니다 (예 : 테이블).3×3

# ## ###

# ## ###
# ## ###

# ## ###
# ## ###
# ## ###

숫자 ( )이 주어지면 형식화 된 곱셈표를 출력해야 합니다.nn>1n×n

규칙

  • 보다 위 또는 아래에서 입력을받을 수 있습니다n
  • 기본 I / O 규칙이 적용됩니다
  • 공백이 아닌 문자를 선택하여 블록을 나타낼 수 있습니다. 다른 모든 문자 (개행은 특별하지만)는 공백으로 간주됩니다. 선택한 문자는 입력에 따라 다를 수 있지만 입력 전체에서 동일해야합니다.
  • 테이블이 정렬되고 필요한 출력의 일부가 아닌 선택된 문자가 나타나지 않는 한 결과에 불필요한 문자가있을 수 있습니다.
  • 구분자는 1 자 너비 / 높이 여야하고 사각형을 묶어야합니다 (즉, 문자 사이에 구분자가 없어야 함).
  • 빈 줄은 비워 둘 수 있으며 패딩은 필요하지 않습니다.
  • 결과는 문자열, 행렬, 라인 벡터, 문자 배열 배열 또는 2Dish 일 수 있습니다.
  • 다른 방법으로 행렬 / 벡터-벡터 / 어떤 2Dish 숫자를 출력 할 수 있지만 배경과 전경은 2 개의 고유 숫자 (입력에 따라 입력이 가능하지만 출력 전체가 아닌) 여야하며 다른 숫자는 존재할 수 없습니다. 배경 형식과 일치해야하지만 추가 주변 문자도이 형식으로 사용할 수 있습니다.
  • 이것은 , 바이트 단위의 짧은 대답, 언어 별, 승리입니다!

input의 2경우 문자 가 있는 유효한 ASCII 아트 출력 은 다음과 같습니다.

        ∙ ∙∙

Result: ∙ ∙∙.
        ∙ ∙∙

예, 기간은 당신을 혼란스럽게합니다
숫자 행렬로 유효한 또 다른 대답은 2이며 배경 숫자는 9이고 전경은 9입니다.

[[9,2,9,9,2,2],
 [2,2,2,2,2,2],
 [9,2,9,9,2,2],
 [9,2,9,9,2,2]]

잘못된 출력 예제는

#  # #


#  # #

#  # #

사각형 사이에 구분 기호가 있으므로

대한 예제 출력 :4×4

# ## ### ####

# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####


1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1

테이블 끝이 아닌 추가 행 / 열의 배경 문자를 앞에 둘 수 있습니까?
Kirill L.

@KirillL. 행이 정렬되는 한
dzaima

2
Nitpick : ∙ (U + 2219 : BULLET OPERATOR)가 ASCII 문자 세트에 없습니다. • (U + 2022 : BULLET) 또는 ⋅ (U + 22C5 : 도트 연산자) 또는 · (U + 00B7 : 중간 도트)도 아닙니다. :)
Andreas Rejbrand

답변:


10

하스켈 , 43 바이트

f n=map=<<flip(map.max)$show.(10^)=<<[1..n]

온라인으로 사용해보십시오!

0과 1로 출력하는 Ørjan Johansen의 영리한 접근 방식은 각 10...00부분을 ​​10의 거듭 제곱의 문자열 표현으로 생성합니다 .

111111111
101001000
111111111
101001000
101001000
111111111
101001000
101001000
101001000

하스켈 , 49 바이트

f n=map=<<flip(map.max)$[0^i|x<-[1..n],i<-[0..x]]

온라인으로 사용해보십시오!

와 같은 패턴을 생성 한 [1,0,1,0,0,1,0,0,0,...]다음 min쌍 을 취하여 2D를 만듭니다 . 포인트 프리 이상한 점은 더 읽기 쉬운 것보다 2 바이트를 절약합니다.

f n|l<-do x<-[1..n];0:(1<$[1..x])=[[a*b|a<-l]|b<-l]

온라인으로 사용해보십시오!


3
이것은 나의 오래된 삼각형 숫자 트릭으로 단축 될 수 있습니다 : 43 바이트
Ørjan Johansen

1
그냥 깨달았습니다 flip(map.max)=mapM max.
Ørjan Johansen

@ ØrjanJohansen Whoa, 어떻게 작동합니까? 나는 당신이 당신의 자신의 답변을 게시 할 수 있다고 생각합니다 :-)
xnor

모나드를로 설정 (->) b한 다음로 설정하십시오 mapM :: (a -> b -> c) -> [a] -> b -> [c].
Ørjan Johansen

@xnor는 다음으로 변경 flip(map.max)하는 것을 잊었습니다.mapM max
ASCII 전용

9

R , 56 54 43 36 30 바이트

x=!!sequence(2:scan())-1;x%o%x

온라인으로 사용해보십시오!

위의 입력을 하나 받습니다 (따라서 3x3 행렬을 반환합니다 ). 의 행렬을 반환 nn=41s0s

-7 바이트의 digEmAll에 감사합니다.


고마워요, BTW 여분의 빈 줄이 맨 앞에가 아니라 앞에있을 수 있다면 아마도 30 일 수도 있습니다.
Kirill L.

아, 그래? 나는 그것을 놓쳤다!
digEmAll

6

자바 스크립트 (ES6),  73 72  69 바이트

1, 공백 및 줄 바꿈으로 구성된 문자열을 반환합니다.

n=>(g=s=>n-->0?g(s+`${p+=1} `):s[~n]?(+s[~n]?s:'')+`
`+g(s):'')(p='')

온라인으로 사용해보십시오!


자바 스크립트 (ES7),  87 83  82 바이트

@dzaima 덕분에 3 바이트 절약

셀 단위로 작성된 이진 행렬을 반환합니다.

n=>[...Array(n*(n+3)/2)].map((_,y,a)=>a.map(h=(z,x)=>(17+8*x)**.5%1&&(z||h(1,y))))

온라인으로 사용해보십시오!

어떻게?

w

w=Tn+n1=(n+12)+n1=n(n+3)21

(NB : 챌린지 규칙에서 허용하는대로 너비 의 행렬을 대신 출력합니다 .)w+1

마찬가지로, 다음 2 차가 또는 대한 정수 루트를 허용하면 에있는 셀 이 비어 있습니다 .(X,Y)k=Xk=Y

x(x+3)21k=0x2+3x22k=0

그 결정 요인은 다음과 같습니다.

Δ=94(22k)=17+8k


바이트를 절약 할 수 있는지 확실하지 않지만 그 2 차의 해는 이므로 가 홀수 이면 정수 루트 가 있습니다. , 는 홀수 완벽한 사각형입니다. 3±17+8k2ΔΔ
아웃 골퍼 에릭

5

MATL, 14 10 바이트

:"@:Fv]g&*

이 답변은 1블록과 0배경에 사용됩니다.

MATL Online 에서 사용해보십시오

설명

     % Implicitly grab the input as an integer, N
     %   STACK: { 3 }
:    % Create an array from 1...N
     %   STACK: { [1, 2, 3] }
"    % For each element M in this array
  @: % Create an array from 1...M
     %   STACK (for 1st iteration): { [1] }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3] }
  F  % Push a zero to the stack
     %   STACK (for 1st iteration): { [1], 0 }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2], 0 }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3], 0 }
  v  % Vertically concatenate everything on the stack
     %   STACK (for 1st iteration): { [1; 0] }
     %   STACK (for 2nd iteration): { [1; 0; 1; 2; 0] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0; 1; 2; 3; 0] }
] 
g    % Convert everything to be boolean (turns all non-zeros to 1)
     %   STACK: { [1; 0; 1; 1; 0; 1; 1; 1; 0] }
&*   % Perform element-wise multiplication to expand this array out into the 2D grid
     % Implicitly display the result


4

APL (Dyalog Unicode) , 12 10 12 바이트 SBCS

∘.×⍨∊,\0,⎕⍴1

온라인으로 사용해보십시오!

편집 : ngn에서 -2 바이트. 이전 답변이 유효하지 않기 때문에 +2 바이트 (ngn 및 dzaima 덕분에 아이디어로).

설명

∘.×⍨∊,\0,⎕⍴1

             Take input.
           1  An array of 1s of length our input. Example: 1 1 1
       0,      Prepend a 0. Example: 0 1 1 1
     ,\        Take all the prefixes and concatenate them. Example: 0  0 1  0 1 1  0 1 1 1
              Flatten the list. Example: 0 0 1 0 1 1 0 1 1 1
∘.×⍨           Turn the above list into a multiplication table of 0s and 1s
               by multiplying the list with itself.

출력은 다음과 같아야합니다.

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1

1
17 { }
ngn

4

젤리 , 7 바이트

‘RÄṬ|þ`

온라인으로 사용해보십시오!

사각형의 경우 을 사용 하고 그 사이의 패딩에는 을 사용하여 숫자 행렬을 출력 합니다. TIO 링크에는 행과 열을 정렬하여 사람이 읽을 수있는 방식으로 숫자 행렬을 형식화하는 바닥 글이 포함되어 있습니다.01

설명

‘RÄṬ|þ`
 R       Take a range from 1 to
‘          {the input} plus 1
  Ä      Cumulative sum; produces the first {input}+1 triangular numbers
   Ṭ     Produce an array with 1s at those indexes, 0s at other indexes
     þ   Create a table of {the array}
      `    with itself
    |      using bitwise OR

결과 테이블의 셀 에있는 숫자는 또는 가 삼각 숫자 이면 이되고, 그렇지 않으면 됩니다 (비트 OR은 0과 1의 논리 OR처럼 작동하기 때문에). (우리가 사용하는 젤리 1 기반 색인을 사용하기 때문에 우리가 열 0 0의 잘못 전체 것에 대해 걱정을하지 않아도, 1, 범위를 우리는 배열에 의해 생성하기 때문에 입력에 1을 추가해야(x,y)1xy0R입력에 주어진 가장 큰 요소에서 멈추므로 오른쪽과 아래쪽에 선을 그려야합니다.) 삼각형 숫자 사이의 간격은 연속적인 정수이므로 선 끝 사이의 간격으로 형성된 직사각형 블록 질문에 의해 요청 된 크기만큼; OR 연산 (이 경우 비트 단위)을 사용하면 선이 서로 올바르게 교차 할 수 있습니다.


왜 이것이 커뮤니티 위키입니까?! 담당자를 포기하고 싶다면 아웃 골퍼 에릭에게 줄 수 있습니다
Jonathan Allan

1
나는 모든 답변을 CW로한다. (현상금을받을 수 있다고 생각하지 않는 한 임시 계정을 사용한다) 높은 평판을 얻는 것은 일반적으로 사이트를 악화시키는 것을 목표로 함을 의미합니다 (저는 일주일에 한 번 일주일에 한 번 다시 시도하여 가능하다는 것을 보여주었습니다. 특히 어렵지는 않았지만 여전히 얕은 질문 / 답변이 많았습니다. 실제로 사이트에 많은 기여를합니다). 또한, 평판을 얻는 것은 사이트에서 귀하를 검토 작업에 빠뜨리 게하기 때문에 계정에 부정적인 영향을 미칩니다. 특권을 얻는 것은 실수로 배지를 얻는 위험을 증가시킵니다.
ais523

또한 SE에 대한 게시물 소유권 개념에 대부분 동의하지 않습니다 (대부분 답변이 아닌 질문이 있지만 중재자의 도움이 없으면 질문을 CW 할 수는 없습니다). CW 마커는 "여기에 문제가있는 경우 자유롭게 편집하십시오"라고 명확하게 표시합니다. 명성을 잃지 않더라도 CW 마커를 모든 것에 적용합니다. SE는 결국 위키의 일부가되지만 사람들이 항상 그렇게 사용하지는 않습니다.
ais523

당신이 그것을 원하지 않는다면 RE "높은 평판을 목표로"를 의미하고 의미가 있다고 생각할 때 게시하고 "얕은"q & a라는 단어를 피하십시오. 이 답변이 사이트에 무언가를 추가한다고 생각하는 경우 CW없이 게시하거나 "얕은"것으로 생각하면 게시하지 않는 것입니다. RE "SE의 게시물 소유권 개념에 대부분 동의하지 않습니다."-당신은 단순히 잘못된 사이트에 있습니다.
Jonathan Allan

2
나는 그 대답이 사이트에 무언가를 추가한다고 생각하지만 그것이 CW가 아니라면, 내가 흥미로울 것이라고 생각하는 것을 게시하는 대신 나에게 명성을 얻는 방식으로 게시하도록 강요 받는다. 내가 20k 사용자 였을 때, 나는 사이트를 정말로 싫어하고 결국 그로 인해 코드 골프에서 거의 빠져 나갔으므로 결과적으로 내 계정을 삭제했습니다. 내가 돌아 왔을 때 나는 내가 게시 한 모든 답변 (다음 답변을위한 새로운 답변 만들기)으로 내 계정을 삭제했지만 다른 사람은 모든 답변을 CW하는 것이 비슷한 영향을 줄 것이라고 지적 했으므로 요즘 대신 그렇게합니다.
ais523

4

05AB1E , 9 바이트

정의 프로그램 .fNatList[List[Nat]]

암호:

$L×0ýSDδ*

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오! 또는 인쇄본 버전을 사용하십시오 .


설명:

$ # 숫자 1과 입력 n 
 L을 누릅니다. # 목록을 만듭니다 [1, 2, 3, ..., n ]
  × # 벡터화 된 문자열 곱셈 : 1 × [1, 2, 3, ..., n ]
                 결과적으로 [ "1", "11", "111", ..., "1"× n ]
   0ý # 결과 목록을 '0'으로 결합하여 "10110111011110111110 ..."
     S # 한 자리로 나누기 : [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, ...]
      자체가 포함 된 Dδ * # 곱셈표

4

C # (Visual C # 대화 형 컴파일러) , 96 95 바이트

무지의 구현 덕분에 -1 바이트

n=>{var l="";for(;n>0;)l=new string('#',n--)+' '+l;for(;n<l.Length;)WriteLine(l[n++]>32?l:"");}

온라인으로 사용해보십시오!


인수를 통한 입력이지만 stdout을 통한 출력이 허용되는지 확실하지 않음
ASCII 전용

3
혼합 IO 형식은 괜찮습니다
Jo King

1
왜하지를 추가 n--new string섹션?
무지의 구현




3

, 18 바이트

≔⪫EN×#⊕ι θEθ⭆θ⌊⟦ιλ

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

   N                Input number
  E                 Map over implicit range
       ι            Current value
      ⊕             Incremented
    ×               Repetitions of
     #              Literal `#`
 ⪫                  Join with spaces
≔        θ          Assign to variable
           θ        Retrieve variable
          E         Map over characters
             θ      Retrieve variable
            ⭆      Replace characters with
              ⌊     Minimum of
               ⟦    List of
                ι   Row character
                 λ  Column character
                    Implicitly print each row on its own line

3

C # (.NET 코어) , 208 (155) 바이트

class M{static void Main(string[]a){int i=int.Parse(a[0]);var l="";for(;i>0;)l=new string('#',i--)+' '+l;for(;;)System.Console.WriteLine(l[i++]>32?l:"");}}

온라인으로 사용해보십시오!

다양한 도움을 주신 분들 덕분에 수정 된 버전이 있습니다 (주석 참조).




1
@EmbodimentofIgnorance가 유효하지 않으며 n> = 10에서 작동하지 않습니다 ...
ASCII 전용


2
@Stackstuck 예. 프로그램은 충돌로 종료 될 수 있습니다
ASCII 전용


3

자바 11, 109 바이트

n->{var l="";for(;n>0;)l="x".repeat(n--)+" "+l;for(;n<l.length();)System.out.println(l.charAt(n++)>32?l:"");}

@ASCII 전용 포트 C # .NET 답변 .

온라인으로 사용해보십시오.

n->{                       // Method with integer parameter and no return-type
  var l="";                //  Line-String, starting empty
  for(;n>0;)               //  Loop until `n` is 0:
    l=...+l;               //   Prepend to `l`:
       "x".repeat(n--)+" " //    Repeat "x" `n` amount of times, appended with a space
                           //    And decrease `n` by 1 afterwards with `n--`
    for(;n<l.length();)    //   Inner loop as long as `n` is smaller than the length of `l`:
      System.out.println(  //    Print with trailing newline:
        l.charAt(n++)>32?  //     If the `n`'th character of the line-String is NOT a space:
                           //     And increase `n` by 1 afterwards with `n++`
         l                 //      Print the line-String
        :                  //     Else:
         "");}             //      Print nothing (so only the newlines)

repeat방법 때문에 8이 아닌 Java 11 입니다.
Olivier Grégoire

@ OlivierGrégoire Oops .. 고정
Kevin Cruijssen

그러나 예외를 던지는 람다를 갖는 것이 허용됩니까? 나는 프로그램 전체가 괜찮다고 생각했지만 기능 / 예외는 아닙니다.
Olivier Grégoire

@ OlivierGrégoire 여전히 예상 결과를 출력하는 한 왜 tbh가 아닌지 알 수 없습니다.
케빈 크루이 센

1
이것은 이 토론 과 연결되어 있습니다. 대답은 REPL이 허용되는 경우 (기본적으로는 그렇지 않음) stderr에 인쇄하거나 예외를 throw하는 것이 좋지만 REPL이 허용되지 않으면 std / exception이 허용되지 않습니다.
Olivier Grégoire

2

APL + WIN, 29 바이트

m/⍉(m←¯1↓∊(⍳n),¨¯1)/(n,n←⎕)⍴1

설명:

(n,n←⎕)⍴1 prompt for integer n and create a nxn matrix of 1s

(m←¯1↓∊(⍳n) replicate the columns by 1,2,.....n and insert 0s between each replication

m/⍉ repeat replication and 0 insertion for the rows from above 

예:

⎕:
3
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1



2

루비 , 55 바이트

->n{(s=(1..n).map{|x|?#*x}*' ').chars.map{|c|c<?!?c:s}}

온라인으로 사용해보십시오!

어떻게?

먼저 첫 번째 줄을 만든 다음 문자를 반복하십시오. 문자가 '#'이면 전체 줄을 인쇄하고 그렇지 않으면 공백 인 단일 문자를 인쇄하십시오.



2

펄 6 , 35 33 바이트

{((\*Xx$_+1)~"
"Xx$_+1)>>.say}o^*

온라인으로 사용해보십시오!

익명의 Callable은 숫자를 가져와 *후행 줄 바꿈과 함께 s를 사용 하여 곱셈표를 인쇄합니다 .

설명:

{                             }o^* # Change the input to the range 0..n-1
  (\*Xx$_+1)    # Cross string multiply '*' by all of range 1..n
                # This creates the string "* ** *** ****" etc.
            ~"\n"                 # Append a newline
                 Xx$_+1           # Cross string multiply again
 (                     )>>.say    # And print all the lines

1

하스켈, 69 68 바이트

(a#b)0=[]
(a#b)n=(a#b)(n-1)++b:(a<$[1..n])
f n=((1#0)n#(0<$(1#0)n))n

숫자 행렬을 반환합니다.

온라인으로 사용해보십시오!

f바이트 수가 동일한 변형 :

f n=((#)<*>(0<$)$(1#0)n)n
f n|l<-(1#0)n=(l#(0<$l))n

0 행과 열이 도움이됩니까?
dfeuer

1
@ dfeuer : 예, 바이트를 저장합니다. 내 대답의 첫 번째 버전을 참조하십시오.
nimi


1

MathGolf , 20 바이트

╒ÉÄ10;]h\■mÆε*╣¡§y╠n

온라인으로 사용해보십시오!

MathGolf는 실제로 목록을 분할하고 2D 목록을 생성하기 위해 더 많은 기능을 필요로합니다.

설명

╒                      range(1,n+1)
 É                     start block of length 3
  Ä                    start block of length 1
   1                   push 1
    0                  push 0
     ;                 discard TOS
      ]                end array / wrap stack in array
                       the stack now contains the list [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, ...]
       h               length of array/string without popping (used for splitting string)
        \              swap top elements
         ■             cartesian product with itself for lists, next collatz item for numbers
          m            explicit map
           Æ           start block of length 5
            ε*         reduce list by multiplication (logical AND)
              ╣¡       push the string " #"
                §      get character at index 0 or 1 based on logical AND value
                       block ends here, stack is now ['#',' ','#','#',' ','#',...]
                 y     join array without separator to string
                  ╠    pop a, b, push b/a (divides the string using the length of a single line)
                   n   join array of strings with newlines

1

잉크 , 151 (152) 151 바이트

VAR k=0
=t(n)
~k=n
-(u)
~n--
{n+1:->s(k-n)->u}->->
=r(c)
->g(c)->
{k-c:<>->r(c+1)}->->
=g(n)
{n>1:@<>->g(n-1)}@->->
=s(n)
{n:
->r(1)->
->s(n-1)
}
.->->

온라인으로 사용해보십시오!

규칙은 초과 문자를 허용하는 것이 좋습니다.

편집 : +1 : 고정 간격. 또한 # (필요한) 대신 @ (이스케이프 할 필요 없음)를 사용하여 표시

편집 : -1 : 분명히 그 수정은 더 이상 비어 있지 않은 줄에 줄 바꿈을 강제하기 위해 후행 기간이 필요하지 않음을 의미했습니다. 산뜻한.


오, 나는 실제로 그 공간을 보지 못했습니다. 내가 그들에 대해 뭔가 할 수 있는지 볼 수 있습니다 ...
Sara J


0

SmileBASIC, 83 77 바이트

그래픽 출력. 입력은N-1

INPUT N
FOR J=0TO N
X=0FOR I=0TO N
GFILL X,Y,X+I,Y+J
X=X+I+2NEXT
Y=Y+J+2NEXT


0

펄 6, 63 바이트

{(1..$_).map(((1..$_).map("#"x*).join(" ")~"\n")x*).join("\n")}

1
.join(' ')아무것도 않습니다 '#'수 있습니다 \*대신, 줄 바꿈 문자열 리터럴 개행 문자를 사용할 수 없습니다, 둘 다 l.map(str x*)할 수 있습니다 (str Xx l)대신. 38 바이트
Jo King

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.