음이 아닌 정수에서 정수 쌍 생성


25

음수가 아닌 정수를 취 프로그램이나 함수를 작성해야하는 N입력 및 출력 또는 복귀 두 정수 (음수, 양수 또는 제로)으로 X하고이 Y.

정수는 무한히 많으므로 수학적 의미로 사용됩니다.

구현 된 기능은 bijective 이어야 합니다. 모든 것을위한 수단이 N그 출력을 갖는 다른 X Y한 쌍의 모든 X Y쌍은 일부 입력 출력한다 N일부 출력되어야하는 다음의 모든 쌍, 즉 N:

                 ...
    ┌─────┬─────┬────┬────┬────┐
    │-2 -2│-2 -1│-2 0│-2 1│-2 2│
    ├─────┼─────┼────┼────┼────┤
    │-1 -2│-1 -1│-1 0│-1 1│-1 2│
    ├─────┼─────┼────┼────┼────┤
... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ...
    ├─────┼─────┼────┼────┼────┤
    │1 -2 │1 -1 │1 0 │1 1 │1 2 │
    ├─────┼─────┼────┼────┼────┤
    │2 -2 │2 -1 │2 0 │2 1 │2 2 │
    └─────┴─────┴────┴────┴────┘
                 ...

그 참고 U V하고 V U다른 쌍 경우입니다 U!=V.

세부

  • 언어가 임의로 큰 정수를 지원하지 않으면 괜찮지 만 알고리즘은 임의로 큰 정수 데이터 유형으로 작동해야합니다. 코드는 적어도 입력 값을 지원해야합니다 2^31-1.
  • 출력을 문자열로 인쇄하거나 반환하도록 선택하면 선행 0또는 +부호가 허용되지 않습니다. 그렇지 않으면 언어의 표준 정수 표현이 좋습니다.

경우 작업은 음이 아닌 정수 복용 전단 사 함수를 만드는 것 N출력 정수 X기능 할 수있는 솔루션을

if (input mod 2 == 0) return N/2 else return -(N+1)/2,

일부 언어로 구현되었습니다. 이 함수는를 반환 X = 0 -1 1 -2 2...합니다 N = 0 1 2 3 4....


다른 입력에 대해 출력의 정수를 반복 할 수 있습니까? 예를 들어 10=>11 12, 9=>10 1111이 반복되기 때문에 이것이 유효하지 않습니까?
BrainSteel

1
"궤적"이 "11 12"로 정의되는 한 "10 11"과 동일하지 않으므로 유효하다. 이것은 bijective 함수가 "한 세트의 모든 요소가 다른 세트의 정확히 하나의 요소와 쌍을 이루고 다른 세트의 모든 요소가 첫 번째 세트의 정확히 하나의 요소와 쌍을 이루는 함수로 정의되기 때문입니다. 짝을 이루지 않은 요소. "( en.wikipedia.org/wiki/Bijection ). 기능을 반대로하려면 "11 12"는 10을 출력하고 "10 11"은 9를 출력해야합니다.
GiantTree

@BrainSteel 귀하의 예는 유효합니다. (순서대로) 쌍만 반복 할 수 없습니다. GiantTree가 정확합니다. 질문에 대한 설명이 더 추가되었습니다.
randomra

주어진 언어의 정수 범위 내에서 사용되어야합니까, 아니면 모든 정수에서 작동해야합니까?
flawr

1
@LegionMammal은이 작업에 대한 수학적 설명을 잘 설명했습니다. "미사일 함수 $ f : N + → Z ^ 2 $를 정의해야합니다. – LegionMammal978." 성명서 어딘가에 도움이 될 것 같아요
Brian J

답변:


15

피스, 15

u,-HyeGhGjQ2,ZZ

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

u             reduce
                lambda G,H:    [implicit]
  ,-HyeGhG         (H-2*G[-1],G[0])
  jQ2           base(input(),2)
  ,ZZ           (0,0)
              print result     [implicit]

파이썬 번역 :

g=lambda Z,n:(n-2*Z[1],Z[0])
print reduce(g,binlist(input()),(0,0))

또는 반복적으로 :

(x,y)=(0,0)
for b in binlist(input()):
    (x,y)=(b-2*y,x)
print (x,y)

여기서 binlist숫자를와 같은 숫자 목록으로 변환합니다 binlist(4) = [1,0,0].

그렇다면 어떻게 작동합니까? 그것은 파이썬 솔루션 에서와 같이 숫자 의 이진수 를 기본 음수 2의 두 개의 인터리브 된 숫자로 해석합니다 .n

이진수 ( x , y ) = ( b 02 b 2 + 4 b 48에 해당

n=b5b4b3b2b1b0
(x,y)=(b02b2+4b48b6+,b12b3+4b58b7+).

우리가 n 의 마지막 숫자 을 아직 처리하지 않았다면 모든 지수는 $ 1 $만큼 높을 것입니다. n ' = b 5 b 4 b 3 b 2 b 1( x ' , y ' ) = ( b 12 b 3 + 4 b 58 b 7 + , b 22 b 4b0n

n=b5b4b3b2b1
(x,y)=(b12b3+4b58b7+,b22b4+4b68b8+).

그런 다음 이전 값으로 읽은 후에 새 값을 표현할 수 있습니다b0

(x,y)=(b02y,x).

따라서 반복적으로 각각의 연속적인 비트에 대한 B N , 우리는 점 구축 ( X , Y ) 의 숫자를 추출에서 온다.(x,y)(b2y,x)bn(x,y)


MathJax 지원이 비활성화되었습니다. 가독성을 높이기 위해 설명 편집을 고려할 수 있습니다.
Alex A.

32

CJam, 24 22 21 바이트

내 두뇌는 다른 솔루션이 사용하는 수학을 이해하는 데 어려움이 있습니다. 그러나 내 뇌는 분명히 이진을 이해하므로 비트 조작을 기반으로 한 영혼이 있습니다!

li4b2fmd2/z{)(\2b^}%p

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

설명

이 방법은 입력을 각 출력 번호마다 하나씩 두 개의 인터리브 된 이진 값으로 처리합니다. 각각의 최하위 비트를 제외한 모든 비트는 크기를 인코딩하고, 최하위 비트는이 크기의 비트 단위 보수를 취할지 여부를 시그널링한다. 이 구현에서, 홀수-위치 비트는 제 1 출력 번호 (및 짝수-위치 비트는 제 2에 대응) 및 0보체를 취할 신호 의 LSB에 대응 한다.

예를 들어,의 입력이있는 73경우 이진 표현의 1001001b생성을 인터리빙하지 않고 0 1|0(홀수 비트) 및 1 0 0|1(짝수 비트). 첫 번째 값은의 크기 01b = 1를 가지며 최종 값을 보완해야하며 ~1 = -2두 번째 값은 크기를 100b = 4가지며 보완하지 않아야합니다.

정확성의 비공식 데모

각 입력을 0에서 사용자 지정 숫자에서 1을 뺀 값을 2D 그리드의 출력 위치에 배치하는 테스트 프로그램을 만들었습니다. 온라인 으로도 시도 할 수 있습니다 . 다음은 알고리즘이 어떻게 매핑되는지 보여주는이 프로그램의 출력입니다 0-99.

      -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8

-8                      92 84 86 94                     
-7                      88 80 82 90                     
-6                      76 68 70 78                     
-5                   96 72 64 66 74 98                  
-4                60 52 28 20 22 30 54 62               
-3                56 48 24 16 18 26 50 58               
-2                44 36 12  4  6 14 38 46               
-1                40 32  8  0  2 10 34 42               
 0                41 33  9  1  3 11 35 43               
 1                45 37 13  5  7 15 39 47               
 2                57 49 25 17 19 27 51 59               
 3                61 53 29 21 23 31 55 63               
 4                   97 73 65 67 75 99                  
 5                      77 69 71 79                     
 6                      89 81 83 91                     
 7                      93 85 87 95                     
 8                                                      

채우기 패턴이 약간 이상하게 보이지만 실제로는 형용사입니다! 각각의 연속 제곱이 4 인 경우 이전 변의 두 배로 정사각형을 채 웁니다. 예를 들어 알고리즘은 0-15다음과 같이 매핑됩니다 .

      -2 -1  0  1  2

-2    12  4  6 14   
-1     8  0  2 10   
 0     9  1  3 11   
 1    13  5  7 15   
 2                  

이것은 8x8 정사각형의 중간에 4x4 정사각형을 구성합니다 0-63.

      -4 -3 -2 -1  0  1  2  3  4

-4    60 52 28 20 22 30 54 62   
-3    56 48 24 16 18 26 50 58   
-2    44 36 12  4  6 14 38 46   
-1    40 32  8  0  2 10 34 42   
 0    41 33  9  1  3 11 35 43   
 1    45 37 13  5  7 15 39 47   
 2    57 49 25 17 19 27 51 59   
 3    61 53 29 21 23 31 55 63   
 4                              

16x16 정사각형의 중간에 8x8 정사각형을 구성합니다 0-255.

         -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8

 -8     252 244 220 212 124 116  92  84  86  94 118 126 214 222 246 254    
 -7     248 240 216 208 120 112  88  80  82  90 114 122 210 218 242 250    
 -6     236 228 204 196 108 100  76  68  70  78 102 110 198 206 230 238    
 -5     232 224 200 192 104  96  72  64  66  74  98 106 194 202 226 234    
 -4     188 180 156 148  60  52  28  20  22  30  54  62 150 158 182 190    
 -3     184 176 152 144  56  48  24  16  18  26  50  58 146 154 178 186    
 -2     172 164 140 132  44  36  12   4   6  14  38  46 134 142 166 174    
 -1     168 160 136 128  40  32   8   0   2  10  34  42 130 138 162 170    
  0     169 161 137 129  41  33   9   1   3  11  35  43 131 139 163 171    
  1     173 165 141 133  45  37  13   5   7  15  39  47 135 143 167 175    
  2     185 177 153 145  57  49  25  17  19  27  51  59 147 155 179 187    
  3     189 181 157 149  61  53  29  21  23  31  55  63 151 159 183 191    
  4     233 225 201 193 105  97  73  65  67  75  99 107 195 203 227 235    
  5     237 229 205 197 109 101  77  69  71  79 103 111 199 207 231 239    
  6     249 241 217 209 121 113  89  81  83  91 115 123 211 219 243 251    
  7     253 245 221 213 125 117  93  85  87  95 119 127 215 223 247 255    
  8                                                                        

3
매우 영리한! li4b2fmd2/대신을 사용하여 2 바이트를 절약 할 수 있습니다 0li2b+W%2/W%. 이것은 동일한 정수를 제공하지만 순서는 반대입니다.
Dennis

@Dennis 매우 영리합니다. 그 트릭을 사용하도록 답변을 업데이트했습니다. 감사!
Runer112

12

파이썬 2, 49

편집 : 기본 -2에 더 나은 1 단계 재귀를 사용하여 49로 향상되었습니다.

def f(n):x,y=n and f(n/2)or(0,0);return n%2-2*y,x

여기의 Pyth 버전 사용은reduce 입니다.

편집 : 균형 삼항 에서 -2 로 전환하여 52로 개선되었습니다 .

파이썬 2, 52

h=lambda n:n and n%2-2*h(n/4)
lambda n:(h(n),h(n/2))

파이썬 2, 54

h=lambda n:n and-~n%3-1+3*h(n/9)
lambda n:(h(n),h(n/3))

이것은 Runer112의 솔루션 과 같은 숫자 인터리빙을 사용 하지만 부호가있는 바이너리가 아닌 균형 잡힌 3 진을 사용합니다. 파이썬에는 기본 변환 기능이 내장되어 있지 않기 때문에 코드는 재귀 적으로 구현합니다.

도우미 함수 h( 3대신 9)는 자연수를 사용하여 숫자 대체로 삼항에서 균형 삼항으로 변환합니다.

0 -> 0 
1 -> +1
2 -> -1

따라서 예를 들어 밑이 201 인 19는 (-1) * 3 ^ 2 + (0) * 3 ^ 1 + (+ 인 균형 삼항에서 (-1) (0) (+ 1)이됩니다. 1) * 3 ^ 0 = -8.

균형 삼항은 모든 정수를 인코딩하기에 충분하므로 자연수에서 정수로의 매핑을 제공합니다.

정수 쌍에 매핑하기 위해 숫자를에 인터리브합니다 n. 그렇게하기 위해 우리는 재귀 단계가 아닌 h다른 모든 숫자를 살펴 보았습니다 . 그런 다음 하나의 좌표에 대해 로 나누면 층별로 이동 합니다 .n/9n/3n3

다음은 [-4,4] ^ 2 영역을 커버하는 처음 81 개의 출력입니다.

0 (0, 0)
1 (1, 0)
2 (-1, 0)
3 (0, 1)
4 (1, 1)
5 (-1, 1)
6 (0, -1)
7 (1, -1)
8 (-1, -1)
9 (3, 0)
10 (4, 0)
11 (2, 0)
12 (3, 1)
13 (4, 1)
14 (2, 1)
15 (3, -1)
16 (4, -1)
17 (2, -1)
18 (-3, 0)
19 (-2, 0)
20 (-4, 0)
21 (-3, 1)
22 (-2, 1)
23 (-4, 1)
24 (-3, -1)
25 (-2, -1)
26 (-4, -1)
27 (0, 3)
28 (1, 3)
29 (-1, 3)
30 (0, 4)
31 (1, 4)
32 (-1, 4)
33 (0, 2)
34 (1, 2)
35 (-1, 2)
36 (3, 3)
37 (4, 3)
38 (2, 3)
39 (3, 4)
40 (4, 4)
41 (2, 4)
42 (3, 2)
43 (4, 2)
44 (2, 2)
45 (-3, 3)
46 (-2, 3)
47 (-4, 3)
48 (-3, 4)
49 (-2, 4)
50 (-4, 4)
51 (-3, 2)
52 (-2, 2)
53 (-4, 2)
54 (0, -3)
55 (1, -3)
56 (-1, -3)
57 (0, -2)
58 (1, -2)
59 (-1, -2)
60 (0, -4)
61 (1, -4)
62 (-1, -4)
63 (3, -3)
64 (4, -3)
65 (2, -3)
66 (3, -2)
67 (4, -2)
68 (2, -2)
69 (3, -4)
70 (4, -4)
71 (2, -4)
72 (-3, -3)
73 (-2, -3)
74 (-4, -3)
75 (-3, -2)
76 (-2, -2)
77 (-4, -2)
78 (-3, -4)
79 (-2, -4)
80 (-4, -4)

쿼터 허수를 가진 대체 코딩은 더 길지만 더 길었습니다.

파이썬 2, 63

h=lambda n:n and n%4+2j*h(n/4)
lambda n:(h(n).real,h(n).imag/2)

복잡한 변환을 덜 교묘하게 처리하는 언어에서는 아마도 더 나은 방법 일 것입니다. 복소수를 출력 할 수 있다면 다음과 같이 할 수 있습니다.

파이썬 2, 38

f=lambda n:n and n%2+n/2%2*1j-2*f(n/4)

1
원래의 기본 -2 함수는 평균 Pyth 답변을합니다. L&b-%b2*2y/b4,yQy/Q2길이는 20 바이트입니다.
Dennis

4
@Dennis 방금 15 문자 Pyth 솔루션을 작성했습니다.
xnor April

균형 잡힌 3 차 및 4 차 가상. 내가 가장 좋아하는 기지 중 두 곳. Base-e 만 따라옵니다.
Brian Minton

11

파이썬 2, 98 바이트

간단한 접근법으로 시작합시다.

def f(N):
 x=a=0;b=2
 while N:x+=1j**b;b+=a<1;a=a or b/2;N-=1;a-=1
 return int(x.real),int(x.imag)

N원점에서 시작하여 2d 그리드에 긴 직사각형 나선 단위를 형성 하고 마지막 점의 좌표를 반환합니다.

이 기능은 다음과 같은 이유로 형용사입니다.

  • 나선이 충분히 길면 각 점을 덮을 수 있습니다.
  • 각 점은 나선형으로 한 번만 교차합니다.

나선은 다음과 같이 보입니다 (1이 아닌 0에서 시작하는 경우 제외).

울람 나선


@AlexA. 0**0 == 1파이썬에서와 동일합니다if a == 0: a = b/2
grc

설명해 주셔서 감사합니다.
Alex A.

@AlexA. 밝혀 a=a or b/2짧은
GRC가

0^0=1파이썬뿐만 아니라 모든 수학에서 @grc .
데니스

1
@Daenyth 0**0는 실제로 수학에서 불확실한 형태 입니다
Sp3000

8

dc, 49

[1+2~2*1-*n]sm?dsa8*1+v1-2/dd1+*2/lar-dlmx32P-lmx

음수가 아닌 정수를 그리드에 배치하여 시작합니다.

..| 
4 | 14
3 |  9 13
2 |  5  8 12
1 |  2  4  7 11
0 |  0  1  3  6 10
Y +-----------------
  X  0  1  2  3  4 ...

격자 위치가 N을 증가시키면서 대각선으로 채워지는 방법에 유의하십시오. Y = 0 행은 다음과 같이 주어진 삼각형 숫자 시퀀스를 포함합니다. N = X(X+1)/2 . 이것은 2 차 방정식으로 + ve 루트 만 사용하여 정규식을 사용하여 풀기 때문에 Y = 0 일 때 N에서 X를 구할 수 있습니다. 다음은 모든 N에 고유 한 {X, Y}를 제공하는 간단한 산술 셔플 링입니다.

이것은 필요한 bijective 품질을 제공하지만 X와 Y는 음수가 아닌 것이지만 질문에는 가능한 모든 정수가 필요합니다. 따라서 X와 Y는 ((t+1)/2)*((t+1)~2*2-1)가능한 모든 정수를 제공하기 위해 매핑됩니다 .

dc임의의 정밀도 숫자가 있으므로 입력 범위에 2^31-1문제가 없습니다. 기본 정밀도는 소수점 이하 0 자리이며 여기에서 필요한 동작 인 sqrt()/내림차순입니다.

산출:

$ for i in {0..10}; do dc biject.dc <<< $i; echo; done
0 0
0 -1
-1 0
0 1
-1 -1
1 0
0 -2
-1 1
1 -1
-2 0
0 2
$

5

Matlab, 54 바이트

n=input('')+1;[i,j]=find(spiral(2*n)==n);disp([i,j]-n)

여기서 핵심 spiral은 임의 크기의 나선형 행렬을 만듭니다.

spiral(3)

보고

ans =

 7     8     9
 6     1     2
 5     4     3

spiral4n2n104n1052.91011n=232


2

하스켈, 78 74 바이트

(concat[[(x,i-x),(x,x-1-i),(-1-x,x-1-i),(-1-x,i-x)]|i<-[0..],x<-[0..i]]!!)

시운전 :

*Main> mapM_ (print . (concat[[(x,i-x),(x,x-1-i),(-1-x,x-1-i),(-1-x,i-x)]|i<-[0..],x<-[0..i]]!!) ) [0..20]
(0,0)
(0,-1)
(-1,-1)
(-1,0)
(0,1)
(0,-2)
(-1,-2)
(-1,1)
(1,0)
(1,-1)
(-2,-1)
(-2,0)
(0,2)
(0,-3)
(-1,-3)
(-1,2)
(1,1)
(1,-2)
(-2,-2)
(-2,1)
(2,0)

작동 방식 : 1 사분면의 모든 쌍을 다음 순서로 나열합니다.

  |
 2| #4
  |
 1| #2  #5
  | 
 0| #1  #3  #6
  +---------------
     0   1   2   3 

각 점을 다른 사분면으로 미러링하여 4 개의 요소 목록을 만듭니다. 모든 것을 하나의 목록으로 연결하고n th 요소를 .

편집 : 함수에는 이름이 필요 없으며 수학 순서를 다시 정렬하십시오. 표현.


do-notation 을 사용하여 4 바이트를 절약 할 수 있습니다 . 온라인으로 사용해보십시오!
ბიმო

1

하스켈 , 50 바이트

(0!).succ
l!n=(last$(!).succ:[(,)|odd n])l$div n 2

온라인으로 시도 하거나 역으로 시도하십시오!

언 골프

ntoN2 n = 0 ! (n + 1)

xCounter ! remainingNum
  | odd remainingNum = (xCounter, div remainingNum 2)
  | otherwise        = (xCounter + 1) ! div remainingNum 2

설명

(엑스,와이)22엑스(2와이+1)1(!)엑스lxCountery

실제 기능 f( ntoN2)은 절차를 시작하기 전에 입력을 증가시킵니다.


1

05AB1E , 35 바이트

>©DÝʒo®sÖ}àsÅÉʒ®sÖ}à<2÷‚εDÈi2÷ë>2÷(

온라인으로 사용해보십시오! 또는 테스트 스위트

설명

치다

에프:×(엑스,와이),
엑스2엑스+12와이+1+1에프에프1(엑스,와이)=2엑스(2와이+1)1 .

:××(,)(h(),h()),
h:{2, 조차+12, 이상한.
에프hgf:NZ×Z 전단 사 함수이다.

gf

>©DÝʒo®sÖ}àsÅÉʒ®sÖ}à<2÷‚εDÈi2÷ë>2÷( # Full program

                                    # Implicit input: Integer n
>©                                  # Compute n+1 and save it to the register
  DÝ                                # Duplicate n+1 and push the list [0,...,n+1]
    ʒo®sÖ}                          # Only keep those numbers x so that 2^x divides n+1
          à                         # Get maximum element in the list.
           sÅÉ                      # Swap so that n+1 is on top and push [1,3,5,...,n+1]
              ʒ®sÖ}                 # Only keep those numbers z which divides n+1
                   à<2÷             # Compute y = (z-1)/2
                       ‚            # Push the pair [x,y]
                        ε           # Apply the function h to x (and y):
                           i        # if...
                         DÈ         # x is even
                            2÷      # then compute x/2
                              ë>2÷( # else compute -(x+1)/2
                                    # Implicit output: [h(x),h(y)]

와우, 좋은 설명에 찬성했다. 그러나 확실히 05AB1E는 Pyth를 이길 수 있을까요?
ASCII 전용

에프

0

매스 매 티카, 46

SortBy[Tuples[Range[2#]-#,2],Norm][[#]]&[#+1]&

벡터를 기준으로 정렬 한 다음 n1을 선택하십시오.


0

자바 스크립트, 166 168 바이트 / 문자

다른 사람들처럼 직사각형 나선을 사용하는 새로운 접근법.

function f(n){return b=Math,k=b.ceil((b.sqrt(n)-1)/2),t=2*k+1,m=b.pow(t,2),t+=4,m-t>n?(m-=t,m-t>n?(m-=t,m-t>n?[k,k-(m-n-t)]:[-k+(m-n),k]):[-k,-k+(m-n)]):[k-(m-n),-k]}

나는 이것을 사용 했다 Math.SE 답변을 하여 JS로 번역하고 UglifyJS를 사용하여 압축했습니다 .

이 방법은 루프를 사용하지 않으며 어떤 식 으로든 나선을 만들지 않습니다.

나선의 좌표가 모든 정수를 포함하기 때문에 함수는 에프:02.

업데이트 :에 저장하여 2자를 저장 Math했습니다 b.

업데이트 2 : 대체 t-=1와 함께이 t+=4발생하는 문제를 해결하려면에프(0)=에프(8). 이것은 더 이상 나선을 생성하지 않지만 음이 아닌 모든 정수에서 작동합니다.0 (모든 자연수 포함 0).


1) 똑같은 질문을 다시 게시해도 실제로 도움이되지 않습니다. 2) 다른 답변을 복사 한 다음 골프 용
Optimizer

적어도 그것은 질문에 명시된 모든 규칙을 따르며 다른 접근 방식입니다. 또한 나는 다른 사람의 작품을 훔치지 않지만이 답변을 어떻게했는지에 대해 언급합니다.
GiantTree

@Optimizer : 1) GiantTree는 원래의 유효하지 않은 접근 방식에 대해 3 개의 공감대를 얻었으므로 다시 게시해야한다고 제안했습니다. 2) Math.SE에서 가져온 코드는 JavaScript조차 아니기 때문에 미니어처로 코드를 복사하는 것 이상을 수행했습니다.
Dennis

@Dennis 사람들은 downvote를 취소 할 수 있습니다. 또한 축소자를 사용하여 코드를 축소하는 것은 실제로 권장되지 않습니다.
Optimizer

@Optimizer 코드를 골프화하려고했지만 압축기를 사용하면 더 나은 결과 (문자가 적음)가 생겨서 대신 사용했습니다.
GiantTree
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.