이항의 정사각형을 설명


28

(적절한 크기의) 두 개의 다른 자연수가 주어지면 (아래의 예에서와 같이) 그들의 합의 제곱을 (어떤 수단 으로든) 출력하십시오.

주어진 4와 3, 출력 :

12 12 12 12  9  9  9
12 12 12 12  9  9  9
12 12 12 12  9  9  9
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12

1과 3이 주어지면 다음과 같이 출력됩니다.

3 9 9 9
3 9 9 9
3 9 9 9
1 3 3 3

공백은 이유에 따라 다를 수 있지만 열은 왼쪽 정렬, 오른쪽 정렬 또는 (의사) 중심이어야합니다.

후행 줄 바꿈은 괜찮지 만 표준 허점은 아닙니다.

이것은 이므로 # LanguageName, 123답변 과 같은 헤더를 포함 하십시오. 여기서 숫자는 문자입니다 (텍스트 기반이 아닌 언어의 바이트). 큰 유니 코드 문자로의 코드 패킹은 허용되지 않습니다.


보너스 : 숫자 중 하나가 0 일 때 코드가 하나의 제곱을 출력하는 경우 -3; 예를 들어 0과 3이 주어지면 다음과 같이 출력됩니다.

9 9 9
9 9 9
9 9 9

입력 숫자의 최대 값은 얼마입니까? 감사.
밝게 돈

1
@donbright 인위적인 제한이 없습니다. 표시, 계산 (선택한 알고리즘 사용) 및 결과와 관련하여 컴퓨터와 언어가 처리 할 수있는 것은 제한입니다. 잠재적으로, 라인별로 데이터를 받아들이는 프린터가 장착 된 최신 컴퓨터는 거의 제한이 없습니다 ... :-)
Adám

정사각형 방향이 제공됩니까, 아니면 90도 회전 할 수 있습니까?
John Dvorak 5

1
왜 0 값에 대한 보너스입니까? 하나의 정사각형이 아니라면 예상되는 결과는 무엇입니까?
March Ho

@MarchHo 보너스가 그렇게 작은 이유입니다. 그러나 일부 언어는 빈 배열을 처리하지 못할 수 있습니다.
Adám

답변:


14

J, 9 바이트-3 = 6

#~@|.*/#~

@NBZ의 APL answer 에서 영감을 얻었으며 @randomra가 골프를 쳤다. 이것은 숫자 배열을 취하는 동사를 정의합니다. 다음과 같이 사용됩니다.

   (#~@|.*/#~) 4 3
12 12 12 12  9  9  9
12 12 12 12  9  9  9
12 12 12 12  9  9  9
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12

0을 입력하면 크기가 0 인 하위 행렬이 생성되므로 3 바이트 보너스도 청구합니다.

   (#~@|.*/#~) 4 0
16 16 16 16
16 16 16 16
16 16 16 16
16 16 16 16
   (#~@|.*/#~) 0 3
9 9 9
9 9 9
9 9 9

설명

J는이 과제에서 확실한 우위를 점하고 있습니다. 아침 식사에 대한 배열 조작 문제를 먹는 것 외에도 기본적으로 2D 행렬을 올바른 형식으로 인쇄합니다.

       #~  Replicate each number n in input n times
#~@|.      The same for reversed input
     */    Compute their multiplication table

집에서 기분이 좋아집니다.
Adám

3
이 솔루션의 모호한 변화처럼 보이는 table flipperASCII 이모티콘 (╯ ° □ °) ╯( ┻━┻
피트 TNT

10

옥타브, 45 바이트-3 = 42

s=@(m,n)[a=ones(n,1)*n;b=ones(m,1)*m].*[b;a]'

설명

이것은 두 개의 벡터를 구성합니다 ( m = 4와 가정 n = 3) :

ones(n, 1)size의 크기의 배열을 구성 n x 1하므로 다음과 같이 곱합니다 n.

ones(n, 1) * n => [3 3 3]' (where ' is transpose... n x 1 is a column vector)

a = [3 3 3  4 4 4 4]'   %// a is a column vector
b = [4 4 4 4  3 3 3]    %// b is a row vector

그런 다음 벡터 요소에 자동 브로드 캐스트 확장을 사용하여 요소 단위로 곱하여 7 요소 벡터가 7x7 요소 행렬을 생성합니다.

    [3] .* [4 4 4 4 3 3 3]
    [3]
    [3]
    [4]
    [4]
    [4]
    [4]

예를 들어 aby 의 첫 번째 행을 곱 b하면 다음 이 나타 납니다.

    [3] .* [4 4 4 4 3 3 3] = [12 12 12 12  9  9  9]

의 나머지 행과 유사합니다 a.

산출:

>> s(4,3)
ans =

   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12

>> s(3,0)
ans =

   9   9   9
   9   9   9
   9   9   9

이데온 에서 시도해 볼 수 있습니다.


를 제거 할 수 있습니다 s=. 익명 함수 / 람다가 변수에 저장 될 필요는 없다는 규칙이 있습니다.
flawr

6
@flawr 그러나 대답은 42가되지 않을 것입니다.
beaker

확인을 클릭합니다.
아담

9

디아 로그 APL , 10-3 = 7

인수가 복제 된 다음 곱셈 테이블에서 사용 되는 이 답변 에서 영감 * .

⊖∘.×⍨(/⍨⎕)

프롬프트 ( ⎕:)를 발행하고 입력 된 표현식을 평가합니다. (보안상의 이유로 TryAPL 에서는 작동하지 않지만 NGN / APL 에서는 작동합니다 .)
/⍨인수 자체 시간을 복제합니다 ( /⍨4 33 3 3 4 4 4 4)
∘.×⍨곱셈 테이블을 만듭니다.
거꾸로 뒤집습니다.

이것은 모든 길이의 입력에서 작동합니다 (입력은 6 칸 들여 쓰기, 출력은 왼쪽 여백에 있습니다).

      ⊖∘.×⍨(/⍨⎕)
⎕:
      ⍬      ⍝ Empty list (the square of nothing)
      ⊖∘.×⍨(/⍨⎕)
⎕:
      0      ⍝ 0​² = 0
      ⊖∘.×⍨(/⍨⎕)
⎕:
      0 1      ⍝ (0+1)​² = 1²
1
      ⊖∘.×⍨(/⍨⎕)
⎕:
      2 3      ⍝ (2+3)​² = 2² + 3²
6 6 9 9 9
6 6 9 9 9
6 6 9 9 9
4 4 6 6 6
4 4 6 6 6
      ⊖∘.×⍨(/⍨⎕)
⎕:
      1 2 3      ⍝ (1+2+3)​² = 1² + 2(1×2) + 2(1×3) + 2² + 2(2×3) + 3²
3 6 6 9 9 9
3 6 6 9 9 9
3 6 6 9 9 9
2 4 4 6 6 6
2 4 4 6 6 6
1 2 2 3 3 3
      ⊖∘.×⍨(/⍨⎕)
⎕:
      ⍳4    ⍝ Integers 1 through 4
4 8 8 12 12 12 16 16 16 16
4 8 8 12 12 12 16 16 16 16
4 8 8 12 12 12 16 16 16 16
4 8 8 12 12 12 16 16 16 16
3 6 6  9  9  9 12 12 12 12
3 6 6  9  9  9 12 12 12 12
3 6 6  9  9  9 12 12 12 12
2 4 4  6  6  6  8  8  8  8
2 4 4  6  6  6  8  8  8  8
1 2 2  3  3  3  4  4  4  4

* 원래, 나는 다른 해결책을 염두에 두었습니다. 각 사각형은 두 인수의 각 조합에 대한 곱셈표를 만들어 개별적으로 생성됩니다. 그런 다음 네 개의 사각형이 세로 및 가로로 함께 표시됩니다. 다음과 같이 보입니다 :

,/⍪⌿⊖∘.(,⍴×)⍨⎕

위와 같이 프롬프트하십시오. 인수를
,⍴×<결합 ( ,)하고이를 사용 하여 제품으로 채워진 사각형 을 형성 ( )합니다 ( ×).
∘.(………에 )⍨지정된 각 셀이있는 테이블을 만듭니다 ()
수직으로 뒤집습니다.
⍪⌿셀을 세로로 결합하십시오.
,/셀을 가로로 결합하십시오.


1
좋은! 같은 점수를 가진 J에서도 같은 생각 :(|.*/])@#~
Zgarb

@Zgarb 답변을 업데이트하고 내 것과 같은 각주를 넣으십시오. J는 그럴만하다!
Adám

7

R, 31-3 = 28

rev(b<-rep(a<-scan(),a))%*%t(b)

설명:

           a<-scan()            # take numeric input and store as vector a
    b<-rep(         ,a)         # repeat each numeric input by itself and store as vector b
rev(                   )        # the reverse of vector b
                        %*%     # matrix multiplication
                           t(b) # the transposed of vector b

이것은 또한 두 개 이상의 숫자에 적용됩니다. 예를 들어 (5,3,2)의 출력은 다음과 같습니다.

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   10   10   10   10   10    6    6    6    4     4
 [2,]   10   10   10   10   10    6    6    6    4     4
 [3,]   15   15   15   15   15    9    9    9    6     6
 [4,]   15   15   15   15   15    9    9    9    6     6
 [5,]   15   15   15   15   15    9    9    9    6     6
 [6,]   25   25   25   25   25   15   15   15   10    10
 [7,]   25   25   25   25   25   15   15   15   10    10
 [8,]   25   25   25   25   25   15   15   15   10    10
 [9,]   25   25   25   25   25   15   15   15   10    10
[10,]   25   25   25   25   25   15   15   15   10    10

당신은 아마 그것이 올바른 답변이되기 위해서 cat또는 그것을 감싸기 위해 필요할 것입니다 write.
David Arenburg

@DavidArenburg 왜 모르겠어요? "출력 (어쨌든)"이라고 표시되어 있습니다. 요구 사항을 충족시키기 위해 출력하는 데 단 하나의 수단이 필요했습니다.
freekvd

그래 아마 당신이 맞을 수도 있습니다. 그들이 의미하는 바가 확실하지 않습니다.
David Arenburg

@DavidArenburg 그래, 괜찮아. 이것은 입력 / 출력 문제가 아니라 데이터 / 텍스트 문제입니다.
Adám

5

하스켈, 153125 바이트-3 = 122

(#)=replicate
d=length.show
y%x=unlines$(>>= \n->(1+d(x*x+y*y)-d n)#' '++show n)<$>x#(y#(x*y)++x#(x*x))++y#(y#(y*y)++x#(x*y))

코드의 절반은 출력 형식을위한 것입니다. 임의의 큰 정수에서 작동합니다. 출력 예 :

> putStrLn $ 4 % 3
12 12 12 12  9  9  9
12 12 12 12  9  9  9
12 12 12 12  9  9  9
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12

> putStrLn $ 6 % 0
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36

나는 공간을 기반으로 필요한 계산 해요 때문에 때로는 숫자 사이에 추가 공백이있어 x*x+y*y대신에 max (x*x) (y*y), 예를 들어,

> putStrLn $ 2 % 3
  6  6  9  9  9
  6  6  9  9  9
  6  6  9  9  9
  4  4  6  6  6
  4  4  6  6  6

그러나 최대 하나의 공백입니다.


4

매스 매 티카 56-3 = 53

업데이트 : 명명 된 함수를 사용하는 정확히 동일한 코드 크기의 두 번째 방법을 추가했습니다. 그것은 Arraya를 사용 Table하지만 동일한 논리를 따릅니다. (아래 참조)

방법 1

이를 통해 행, 열 값에 따라 제품 표가 작성됩니다. 숫자 쌍은 정수 목록으로 입력됩니다. 다음과 같은 익명 함수는 프로그램에서 한 번만 사용하는 경우 가장 유용합니다. 그렇지 않으면 명명 된 함수를 사용하는 것이 더 합리적입니다.

Grid@Table[If[r>#2,#,#2]If[c>#,#2,#],{r,#+#2},{c,#+#2}]&

각 요소는 If-then 문입니다.

  • If[r>#2,#,#2] "행 번호가 두 번째 입력보다 큰 경우 첫 번째 입력을 인수로 사용하고, 그렇지 않으면 두 번째 입력을 사용하십시오.
  • If[c>#,#2,#] "열 번호가 첫 번째 입력보다 큰 경우 두 번째 입력을 인수로 사용하고, 그렇지 않으면 첫 번째 입력을 사용하십시오.

실시 예 1

 Grid@Table[If[r>#2,#,#2]If[c>#,#2,#],{r,#+#2},{c,#+#2}]&@@{5,3}

ex1


실시 예 2

Grid@Table[If[r>#2,#,#2]If[c>#,#2,#],{r,#+#2},{c,#+#2}]&@@{0,3}

ex2


방법 2 (또한 56-3 = 53)

이 방법은 방법 1과 유사하게 작동하지만 호출 할 때 더 적은 코드가 필요합니다. 그리고 테이블의 셀과 달리 셀에 주소를 지정할 수 있습니다. 이 방법은 기능을 두 번 이상 사용할 경우 사용하는 것이 좋습니다.

a_~f~b_:=Grid@Array[If[#>a,a,b]If[#2>a,b,a]&,{a+b,a+b}]

위의 예제는 다음에 의해 생성됩니다.

예 1 :

f[4,3]

예 2 :

f[0,3]

1
독창적입니다. 이 방법을 사용하면 내 솔루션을 4 자 줄일 수 있습니다.
Adám

감사. 방금 동일한 접근법이 명명 된 함수와 함께 작동한다는 것을 깨달았습니다. 위의 방법 2를 참조하십시오.
DavidC

4

옥타브, 34-3 = 31

@(a)rot90(b=repelems(a,[1,2;a]))*b

예 :

octave:1> f = @(a)rot90(b=repelems(a,[1,2;a]))*b;
octave:2> f([4,3])
ans =

   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12

octave:3> f([0,3])
ans =

   9   9   9
   9   9   9
   9   9   9

와우, 나는 repelems존재 하지 않았다 . 대박!
비이커

4

CJam, 27 바이트-3 = 24

q:L~_]ze~_ff{*sL,2*Se[}W%N*

CJam 스타일 배열로 입력을받습니다. 필요한 것보다 약간 더 많은 간격을 사용하지만 "이유 내"라고 생각하며 항상 올바르게 정렬되어 있습니다.

여기에서 테스트하십시오.

설명

q:L    e# Read the input and store it in L.
~_     e# Evaluate the input, pushing [A B] onto the stack and duplicate it.
]z     e# Wrap both in an array and transpose it to get [[A A] [B B]].
e~     e# Run-length decode, getting A copies of A and B copies of B.
_ff{   e# Double map over each pair of entries in this new array...
  *s   e#   Multiply the two values.
  L,2* e#   Push twice the length of the input string.
  Se[  e#   Pad the result to this width with spaces (from the left).
}
W%     e# Reverse the resulting matrix to get the correct orientation.
N*     e# Join the rows with linefeed characters.

멋지지만 공백을 일으키는 원인은 무엇이며 그것을 줄이려면 무엇이 필요할까요?
Adám

1
@NBZ 셀 너비에서 신뢰할 수있는 상한선을 계산하기 위해 지금까지 찾은 가장 짧은 방법은 입력 문자열 길이의 두 배를 사용하는 것입니다 (더 큰 숫자는 숫자보다 두 자릿수를 초과하지 않기 때문에) 그 자체). 물론 결과 숫자를 기반으로 필요한 실제 양을 계산할 수는 있지만 상당히 길 것입니다.
Martin Ender

4

C 함수 (glibc 사용), 122 바이트-3 = 119

2 개의 루프로 대부분 간단한 구현. 나는 여기서 놓친 골프 기회가 있다고 생각합니다.

f(n,m,x,y){for(x=0;x<n+m;x+=puts(""))for(y=0;y<n+m;y++)printf(" %*d",snprintf(0,0,"%d",n>m?n*n:m*m),(x<m?m:n)*(y<n?n:m));}

입력은 함수의 처음 두 매개 변수에 전달되고 다른 두 매개 변수는 더미입니다. 열이 오른쪽 정렬됩니다.

참고 glibc는 puts()항상 암시 적 후행 줄 바꿈을 포함하여 작성된 바이트 수를 반환하는 것 같습니다. 이것이 다른 libc와 함께 작동한다는 보장은 없습니다.

전체 프로그램에서 :

f(n,m,x,y){for(x=0;x<n+m;x+=puts(""))for(y=0;y<n+m;y++)printf(" %*d",snprintf(0,0,"%d",n>m?n*n:m*m),(x<m?m:n)*(y<n?n:m));}

int main (int argc, char **argv) {
    if (argc == 3) {
        f(atoi(argv[1]),atoi(argv[2]));
    }
}

gcc sqrbin.c -o sqrbin(또는 make sqrbin) 로 컴파일하십시오 . 경고는 무시해도됩니다.

출력 예 :

$ ./sqrbin 4 3
 12 12 12 12  9  9  9
 12 12 12 12  9  9  9
 12 12 12 12  9  9  9
 16 16 16 16 12 12 12
 16 16 16 16 12 12 12
 16 16 16 16 12 12 12
 16 16 16 16 12 12 12
$ ./sqrbin 4 0
 16 16 16 16
 16 16 16 16
 16 16 16 16
 16 16 16 16
$ 

내 경험에 따르면, 반환 값 puts()은 기계에 따라 다릅니다. 예를 들어 10입니다. 또한 팁은 다음과 같습니다. 외부 루프에서 카운터를 조건부로 증가 시키면 일반적으로 두 개의 루프를 하나로 압축 할 수 있습니다. 내 솔루션은 어떻게 수행 할 수 있는지 보여줍니다.
xsot

@xsot 예, puts()리턴 코드는 성공을 위해 + ve 만 보장됩니다. 그러나 glibc를 사용한 테스트 결과 반환 값이 쓴 바이트 수인 것으로 보입니다. 루프 통합에 관해서는, 그렇습니다. 나는 그 기술을 알고 있으며 지금까지 단축하지 않고 여기에서 시도했습니다.
Digital Trauma

2

루비, (133-3) = 130 바이트

s=1
a=ARGV.map{|e|s*=(e=e.to_i);[e]*e}.flatten
s=s.to_s.size
a.reverse.each{|i|a.each{|j|print (i*j).to_s.rjust(s).ljust(s+3)};puts}

4,3

12   12   12   12    9    9    9   
12   12   12   12    9    9    9   
12   12   12   12    9    9    9   
16   16   16   16   12   12   12   
16   16   16   16   12   12   12   
16   16   16   16   12   12   12   
16   16   16   16   12   12   12

1,3

3   9   9   9   
3   9   9   9   
3   9   9   9   
1   3   3   3

0,3

9   9   9   
9   9   9   
9   9   9

2
PPCG에 오신 것을 환영합니다! 나는 당신의 패딩이 많은 수에 충분하다고 생각하지 않습니다. 1과 같은 숫자 를 갖는 것을 고려하십시오 9999. 로 s나올 4것이므로 너비가 채워지 s+3 = 7지만 9999^28 자리가 필요합니다. 2*s대신 사용할 수 있습니다 .
Martin Ender

2
어쨌든, 여기 몇 가지 골프 팁이 있습니다 : 나는 왜 당신이 rjust하기 전에 필요한지 모르겠습니다 ljust. 당신은 단축 print할 수 있습니다 $><<(그리고 그 후 공간을 제거하십시오). ARGV별칭이 $*있습니다. codegolf.stackexchange.com/a/19493/8478flatten 과 같이 배열을 빌드 하면 피할 수 있습니다 . 또한 함수 전용 응답은 여기 (명명되지 않은 함수조차도) 주위에 확실히 허용되므로 함수는 정수 를 입력으로 사용할 수 있으므로 아무 작업도 수행하지 않아도됩니다 . .to_i
Martin Ender

@ MartinBüttner, 팁 주셔서 감사합니다.
Harsh Gupta

2

파이썬 2, 176 바이트-3 = 173

def g(m,n):
 y,x,z,l,f='y','x','z','l','%'+str(len(str(max(m*m,n*n))))+'s'
 d={y:m*n,x:n*n,z:m*m,l:'\n'}
 for i in map(lambda x:d[x],(y*m+x*n+l)*n+(z*m+y*n+l)*m): print f % i,

파이썬 문자열 함수를 사용하여 문자 그리드를 만든 다음 문자를 정수로 바꾸고 형식화 된 출력을 인쇄합니다.


재미있는 방법.
Adám

1

MATLAB, 58-3 = 55

익명 함수 사용하기 :

@(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)

예:

>> @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
ans = 
    @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
>> ans(4,3)
ans =
    12    12    12    12     9     9     9
    12    12    12    12     9     9     9
    12    12    12    12     9     9     9
    16    16    16    16    12    12    12
    16    16    16    16    12    12    12
    16    16    16    16    12    12    12
    16    16    16    16    12    12    12

>> @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
ans = 
    @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
>> ans(0,3)
ans =
     9     9     9
     9     9     9
     9     9     9

(구 해결책) 59-3 = 56

익명 함수 사용하기 :

@(a,b)[b*a*ones(b,a) b^2*ones(b);a^2*ones(a) a*b*ones(a,b)]

1

C, (125-3) 바이트

i,j,a;main(b,s){for(sscanf(gets(s),"%d %d",&a,&b);j<a+b;)printf(++i>a+b?i=!++j,"\n":"%*d",strlen(s)*2,(i<a?a:b)*(j<b?b:a));}

입력은 동일한 행에서 두 개의 공백으로 구분 된 정수로 간주됩니다. 각 셀은 공백으로 입력 문자열의 두 배 길이로 채워집니다.


im gcc (4.8.4)로 컴파일하는 데 문제가 있습니다 ...
밝은

1
debian 패키지 gcc-4.6.1-2를 사용하는 golf.shinh.org/check.rb 에서 이것을 테스트했습니다 . 어떤 컴파일 오류가 발생합니까?
xsot

미안 나는 한 줄로 다시 시도했지만 효과가 있었지만 ... 실행하면 segfault가 발생합니다. 나는 2 세와 히트 반환 문자열을 입력하고이 분할 오류 (코어 덤프) 말한다
돈 밝은

죄송하지만 왜 이것이 효과가 없는지 모르겠습니다. 적어도 당신은 아직도 내가 연결 이전 : 사이트의 코드를 시도 할 수 있습니다
xsot

1

피스, 39-3 = 36

Pyth에는 내장 매트릭스 형식이 없으므로 출력 번호를 수동으로 채워야하므로 크기가 크게 증가합니다. 여기에 내가 생각해 낸 것이 있습니다.

JAQL*b]jdm.[`d\ l`eS^R2Jsm*d]*bdJj+yHyG

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


1

블록 , 51 바이트 52 62 82 87 (비경쟁)

::`+`1|U;{`*`1}|A;`+`1,0+`1={`1^2}|;0+`,`1+`={`^2}|

언 골프 드 :

::
  ` + `1                    | Expand;
  {` * `1}                  | SetAll;
  ` + `1, 0 + `1 = {`1 ^ 2} | Set;
  0 + `, `1 + `  = {` ^ 2}  | Set

시도 해봐

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