삼각 종속성


25

삼각형의 개수 의 합이다 수이고 n1 내지 자연수 n. 예를 들어 삼각형 숫자도 1 + 2 + 3 + 4 = 10마찬가지 10입니다.

양의 정수 ( 0 < n <= 10000)를 입력 (정수 또는 문자열로 사용할 수 있음)으로 지정하면 입력에 추가하여 다른 삼각 숫자를 만들 수있는 가장 작은 삼각 숫자를 반환하십시오.

예를 들어 주어진 input 26,에 10결과를 추가 36하면 삼각형 숫자도됩니다. 다른 삼각형 숫자를 만들기 위해 10추가 할 수있는 것보다 작은 삼각형 숫자는 없으므로이 경우 올바른 결과입니다.2610

0 입력이 삼각 숫자 인 경우, 입력 자체가 삼각 숫자 인 경우 출력은 0

테스트 케이스

사례는 형식으로 제공됩니다 input -> output (resulting triangular number)

0     -> 0   (0)
4     -> 6   (10)
5     -> 1   (6)
7     -> 3   (10)
8     -> 28  (36)
10    -> 0   (10)
24    -> 21  (45)
25    -> 3   (28)
26    -> 10  (36)
34    -> 21  (55)
10000 -> 153 (10153)

채점

이것은 이므로 각 언어에서 가장 적은 바이트 이깁니다!


그렇지 26 -> 2않습니까?
Okx

@ Okk 같은 실수를 저질렀습니다 . 다른 삼각형 숫자를 만들려면 현재 숫자에 추가 할 삼각형 숫자를 찾아야합니다 .
Martin Ender 2016 년

2
관련. (경계선 복제)
Martin Ender

답변:


21

자바 8, 58 57 바이트

n->{int i=0,m=0;while(n!=0)n+=n<0?++i:--m;return-~i*i/2;}

온라인 테스트 스위트

1 바이트 절약을위한 Dennis 에게 감사합니다 .


6
이제 이것은 자바입니다. :)
Olivier Grégoire

4
@Computronium, 작업 순서 는 Java 언어 사양에 의해 보장됩니다 . 자바는 의도적으로 C의 약점을 피한다.
Peter Taylor


2
return-~i*i/2;바이트를 저장합니다.
Dennis

1
@Okx Java는 기본 유형의 경우 값으로 전달되고 객체 (배열 포함)의 경우 기준으로 전달됩니다. 실제로 동일한 변수로 출력하려면 참조로 전달 컨텍스트에 있어야합니다 (명시 적으로 링크에 명시되어 있음). 내가 참조 할 수있는 유일한 방법 int[]intas 인수 대신 as 를 전달하는 것입니다 . 그러나 그것은 나중에 배열을 다루는 것을 의미합니다. 이것은 작동 할 수 x->{int i=0,m=0,n=x[0];while(n!=0)n+=n<0?++i:--m;x[0]=-~i*i/2;}있지만 63 바이트입니다.
Olivier Grégoire

7

MATL , 13 12 바이트

Emigna의 05AB1E 답변 에서 아이디어 (세트 교차)를 사용하여 1 바이트 제거

Q:qYstG-X&X<

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

설명

하자 t(n) = 1 + 2 + ··· + n나타 n번째 삼각형의 수입니다.

코드는 주어진 n솔루션이에 의해 상한 이라는 사실을 이용합니다 t(n-1). 이것을 보려면, 삼각형이 t(n-1) + n같다는 것을 관찰하십시오 t(n).

8예를 들어 입력 을 고려하십시오 .

Q:q   % Input n implicitly. Push [0 1 2 ... n]
      % STACK: [0 1 2 3 4 5 6 7 8]
Ys    % Cumulative sum
      % STACK: [0 1 3 6 10 15 21 28 36]
t     % Duplicate
      % STACK: [0 1 3 6 10 15 21 28 36], [0 1 3 6 10 15 21 28 36]
G-    % Subtract input, element-wise
      % STACK: [0 1 3 6 10 15 21 28 36], [-8 -7 -5 -2  2  7 13 20 28]
X&    % Set intersection
      % STACK: 28
X<    % Minimum of array (in case there are several solutions). Implicit display
      % STACK: 28

Q경계에 대한 당신의 주장으로 선행을 제거 할 수 있습니까 ?
Giuseppe

@Giuseppe 아니요, 입력에 실패했습니다 8. 출력이 경계와 같으면 t(n-1)코드는 다음과 같이 결과를 얻습니다 t(n)-n. 그래서 t(n)필요하다. 어쨌든 아이디어 주셔서 감사합니다!
Luis Mendo

7

자바 (OpenJDK 8) , 83 바이트

n->{int m=0,a=n,b;for(;a-->0;)for(b=0;b<=n;)m=2*n+b*~b++==a*~a?a*a+a:m;return m/2;}

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

크레딧


1
좋은 답변입니다 (항상 그렇습니다.). 내가 내 글을 올렸을 때 이미 자바 답변이 있다는 것을 알지 못했다 . :)
Kevin Cruijssen 2016 년

감사! 네, 첫 대답은 정말 중복되었습니다. 더 많은 프로세서 욕심이 있지만 수정하고 더 수학적으로 만들었습니다. 잠시 후 당신을 확인합니다!
Olivier Grégoire

나는 아직도 여기서 무슨 일이 일어나고 있는지 이해하지 못한다. 왜 작동합니까? 매번 m을 교체하고 있으므로 요점은 무엇입니까?
V. Courtois 2016 년

2
@ V.Courtois이 질문은 가장 작은 것을 요구합니다 m. 그래서 a아래 에서 로 이동 합니다 0. "그러나 당신은 -loop 에서 같은 값 a*a+a을 100 배로 할당 m하고 b있다"고 그렇다. 나는 100 번 할 필요는 없지만, b-loop를 먼저 끊지 않으면 서 바이트를 얻는다.
Olivier Grégoire

@ OlivierGrégoire를 봅니다. 그래서 그것은 의도적으로 비효율적입니다 : D
V. Courtois


4

Neim , 12 9 바이트

tS𝕊Λt𝕚)0𝕔

계산하는 데 시간이 너무 오래 걸리지 만 (무한한 시간과 메모리가 제공되는 경우) 링크에서 첫 번째 143 개의 삼각형 숫자 만 생성합니다 £𝕖.

경고 : 이후 버전에서는 작동하지 않을 수 있습니다. 그렇다면 £ 대신 143을 사용하십시오.

설명:

t                 Infinite list of triangular numbers
 [ 𝕖]             Select the first  v  numbers
 [£ ]                              143
     S𝕊           Subtract the input from each element
       Λ  )       Only keep elements that are
        t𝕚          triangular
           0𝕔     Get the value closest to 0 - prioritising the higher number if tie

시도 해봐!


0에서 10000 사이의 입력에 대해 처음 143 개의 삼각형 숫자는 어떻게 충분합니까? input 9998으로 예상되는 결과는 3118753143 번째 삼각형 수 ( '10296')보다 큽니다.
Olivier Grégoire

@ OlivierGrégoire 이유This takes too long to compute (but works given infinite time and memory)
Stephen

@StepHen에게 감사하지만 그것은 내가 말한 것이 아닙니다. 내가 암시 한 것은 "첫 번째 143 개의 삼각형 숫자는 10,000의 입력을 처리하기에 충분하다"는 문장이 잘못되었다는 것입니다. 나는 수학을하지 않았지만 10000까지의 사건을 처리하기 위해서는 약 10000 개의 삼각형 숫자가 필요하다고 생각합니다.
Olivier Grégoire

@ OlivierGrégoire 나는 10,000의 입력을 처리하기에 충분하지만 그보다 적은 수는 입력하지 않았다고 언급했다. £200과 같이 더 높은 숫자로 자유롭게 변경하십시오.
Okx

@Okx 알았어. 처음 읽을 때 설명을 이해하지 못했습니다. :)
Olivier Grégoire

4

PHP , 45 바이트

for(;!$$t;$t+=++$i)${$argn+$t}=~+$t;echo~$$t;

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

더 짧은 변형입니다 for(;!$r[$t];$t+=++$i)$r[$argn+$t]=~+$t;echo~$r[$t];

넓히는

for(;!$$t;  # stop if a triangular number exists where input plus triangular number is a triangular number
$t+=++$i) # make the next triangular number
  ${$argn+$t}=~+$t; # build variable $4,$5,$7,$10,... for input 4 
echo~$$t; # Output result 

PHP , 53 바이트

for(;$d=$t<=>$n+$argn;)~$d?$n+=++$k:$t+=++$i;echo+$n;

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

PHP 7에서 새로운 우주선 연산자 를 사용하십시오

넓히는

for(;$d=$t<=>$n+$argn;) # stop if triangular number is equal to input plus triangular number 
  ~$d
    ?$n+=++$k  # raise additional triangular number
    :$t+=++$i; # raise triangular number sum
echo+$n; # Output and cast variable to integer in case of zero

PHP , 55 바이트

for(;fmod(sqrt(8*($t+$argn)+1),2)!=1;)$t+=++$i;echo+$t;

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


4

자바 8 110 102 100 93 92 바이트

n->{int r=0;for(;t(r)<-t(n+r);r++);return r;}int t(int n){for(int j=0;n>0;n-=++j);return n;}

@PeterTaylor 덕분에 -2 바이트 . @JollyJoker
덕분에 -7 바이트 .
@ceilingcat 덕분에 -1 바이트 .

설명:

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

n->{                  // Method with integer as parameter and return-type
  int r=0;            //  Result-integer (starting at 0)
  for(;t(r)<-t(n+r);  //  Loop as long as neither `r` nor `n+r` is a triangular number
    r++);             //   And increase `r` by 1 after every iteration
  return r;}          //  Return the result of the loop

int t(int n){         // Separate method with integer as parameter and return-type
                      // This method will return 0 if the input is a triangular number
  for(int i=0;n>0;)   //  Loop as long as the input `n` is larger than 0
    n-=++j;           //   Decrease `n` by `j` every iteration, after we've raised `j` by 1
  return n;}          //  Return `n`, which is now either 0 or below 0

1
Java 솔루션을 가장 쉽게 읽을 수 있음 :)
JollyJoker

@JollyJoker 어쩌면 그것이 가장 긴 이유입니다. ;) 아니면 추가 된 설명 때문입니까?
Kevin Cruijssen

아냐, 나는 코드에 대해 생각하고 있었다. Peter Taylor의 솔루션이 어떻게 작동하는지 알아내는 데 15 분이 걸렸습니다. 의견이 없어도 당신은 분명합니다.
JollyJoker 2016 년

3

Brachylog , 17 15 바이트

⟦{a₀+}ᶠ⊇Ċ-ṅ?∧Ċh

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

설명

⟦                  [0, …, Input]
 {   }ᶠ            Find all…
  a₀+                …Sums of prefixes (i.e. triangular numbers)
       ⊇Ċ          Take an ordered subset of two elements
         -ṅ?       Subtracting those elements results in -(Input)
            ∧Ċh    Output is the first element of that subset

3

파이썬 2 , 59 바이트

lambda n:min((r-2*n/r)**2/8for r in range(1,2*n,2)if n%r<1)

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

삼각 숫자 를 얻기 위해 t추가 할 수있는 것보다 다음과 같은 삼각 숫자의 특성을 사용합니다 n.

8*t+1 = (r-2*s)^2제수 쌍 (r,s)으로 r*s==n하고 r, 홀수.

코드는 그러한 삼각형 숫자의 최소값을 취합니다.


3

젤리 , 8 바이트

0r+\ðf_Ḣ

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

작동 원리

0r+\ðf_Ḣ  Main link. Argument: n

0r        Build [0, ..., n].
  +\      Take the cumulative sum, generating A := [T(0), ..., T(n)].
    ð     Begin a dyadic chain with left argument A and right argument n.
      _   Compute A - n, i.e., subtract n from each number in A.
     f    Filter; keep only numbers of A that appear in A - n.
       Ḣ  Head; take the first result.

3

Japt , 24 23 16 15 바이트

ò å+
m!nNg)æ!øU

그것을 테스트

ETH 덕분에 1 바이트 절약


설명

    :Implicit input of integer U.
ò   :Create an array of integers from 0 to U, inclusive.
å+  :Cumulatively reduce by summing. Result is implicitly assigned to variable V.
m   :Map over U.
!n  :From the current element subtract...
Ng  :  The first element in the array of inputs (the original value of U).
æ   :Get the first element that returns true when...
!øU :  Checking if U contains it.
    :Implicit output of resulting integer.

나는 당신이 바이트를 절약 할 수 있다고 생각합니다 æ!øV. 그 외에는 훌륭해 보입니다 :-)
ETHproductions



2

수학, 62 바이트

(s=Min@Abs[m/.Solve[2#==(n-m)(n+m+1),{n,m},Integers]])(s+1)/2&

Mathematica를 모르지만 Solve[2*#==m(m+1)-n(n+1)더 짧을 것입니다 (작동하는 경우)?
Kritixi Lithos 2016

예, 방금 답변을 게시하고 바로 골프를
치려고합니다.

2

파이썬 2 , 78 71 70 바이트

ovstheespinosa에 7 바이트가 저장 되었습니다.

의 발언으로 인해 저장된 하나 더 바이트 , x+9suffisant이고 확인 모든 자연수에 대해 0 <= n <= 10000. 또한 대신에 확인 되었으며 작동합니다.x+1x+9

x=input()
I={n*-~n/2for n in range(x+1)}
print min(I&{i-x for i in I})

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


2
n*-~n/2n*(n+1)/2
ovs

2
범위 (x + 9)가 작동합니까?
Neil

2
{n*(n+1)/2for n in range(999)}명시 적 대신 사용할 수 있고 세 번째 줄 대신 set사용할 수도 있습니다{}set
TheEspinosa

2

자바 스크립트 (ES6), 43 42 바이트

f=(n,a=s=0)=>n?f(n+=n>0?--s:++a,a):a*++a/2
<input type=number min=0 value=0 oninput=o.textContent=f(+this.value)><pre id=o>0

편집 : @PeterTaylor 덕분에 1 바이트가 절약되었습니다.


Setting a global variable is a hideous abuse of a default parameter. +1. But FWIW you can save a further byte by replacing -++s with --s, as I did in my independently derived but quite similar Java version. (Addendum: you also need to change the test to n>0).
Peter Taylor

@PeterTaylor Huh, so the n>s check was a red herring all along!
Neil

Works not for 8192
Jörg Hülsermann

@JörgHülsermann If you're referring to the snippet, then your browser's stack size may not be large enough, or you may need a browser with experimental tail call optimisation. Alternatively, if you're using NodeJS for testing, use node --stack_size= to increase its stack size.
Neil

2

Python 3, 60 44 bytes

f=lambda n,k=1:(8*n+1)**.5%1and f(n+k,k+1)+k

Thanks to @xnor for a suggestion that saved 16 bytes!

Try it online!

Background

Let n be a non-negative integer. If n is the kth triangular number, we have

condition

which means there will be a natural solution if and only if 1 + 8n is an odd, perfect square. Clearly, checking the parity of 1 + 8n is not required.

How it works

The recursive function n accepts a single, non-negative integer as argument. When called with a single argument, k defaults to 1.

First, (8*n+1)**.5%1 tests if n is a triangular number: if (and only if) it is, (8*n+1)**.5 will yield an integer, so the residue from the division by 1 will yield 0.

If the modulus is 0, the and condition will fail, causing f to return 0. If this happens in the initial call to f, note that this is the correct output since n is already triangular.

If the modulus is positive, the and condition holds and f(n+k,k+1)+k gets executed. This calls f again, incrementing n by k and k by 1, then adds k to the result.

When f(n0, k0) finally returns 0, we back out of the recursion. The first argument in the first call was n, the second one n + 1, the third one n + 1 + 2, until finally n0 = n + 1 + … k0-1. Note that n0 - n is a triangular number.

Likewise, all these integers will be added to the innermost return value (0), so the result of the intial call f(n) is n0 - n, as desired.


If you increment n in recursing as well, you can write n rather than (n+k).
xnor


Wow, that's a lot nicer than what I was trying.
xnor

2

C# (.NET Core), 291 281 bytes

class p{static int Main(string[]I){string d="0",s=I[0];int c=1,j,k;for(;;){j=k=0;string[]D=d.Split(' '),S=s.Split(' ');for(;j<D.Length;j++)for(;k<S.Length;k++)if(D[j]==S[k])return int.Parse(D[k]);j=int.Parse(D[0])+c++;d=d.Insert(0,$"{j} ");s=s.Insert(0,$"{j+int.Parse(I[0])} ");}}}

Try it online! Program that takes a string as input and outputs through Exit Code.

Saved 10 Bytes thanks to Kevin Cruijssen


1
Hi, welcome to PPCG! You don't need a full program unless the challenge states otherwise. The default is program/function, so a lambda is allowed as well in C#. But if you want to use program, you can golf some things in your current code: class p{static int Main(string[]I){string d="0",s=I[0];int c=1,j,k;for(;;){j=k=0;string[]D=d.Split(' '),S=s.Split(' ');for(;j<D.Length;j++)for(;k<S.Length;k++)if(D[j]==S[k])return int.Parse(D[k]);j=int.Parse(D[0])+c++;d=d.Insert(0,$"{j} ");s=s.Insert(0,$"{j+int.Parse(I[0])} ");}}} (281 bytes)
Kevin Cruijssen

@KevinCruijssen Thanks for the advice! using for(;;) to make an infinite loop is a nice bump, and I'll make sure to think more carefully about whether using var is actually more efficient than using an explicit type but combining the declarations, and I guess be more diligent in removing unnecessary brackets. As for the program vs. function, I started with a lambda but couldn't get it to run in TIO. I know a TIO link isn't actually necessary, but it's something I like to see in others' answers so I wanted at least something similar in my own.
Kamil Drakari

I'm also not very good in C# lambdas tbh, I usually codegolf in Java. But I think this should be correct. (252 bytes). Also, in case you haven't seen it yet: Tips for code-golfing in C# and Tips for golfing in <all languages> might be interesting to read through. Again welcome, and +1 from me. Nice first answer. Enjoy your stay. :)
Kevin Cruijssen

2

JavaScript (ES7), 46 44 bytes

f=(n,x=r=0)=>(8*(n+x)+1)**.5%1?f(n,x+=++r):x

Try it

o.innerText=(
f=(n,x=r=0)=>(8*(n+x)+1)**.5%1?f(n,x+=++r):x
)(i.value=8);oninput=_=>o.innerText=f(+i.value)
<input id=i type=number><pre id=o>


1
Would r=x=0 work?
Kritixi Lithos

Sadly not, @KritixiLithos.
Shaggy

1

05AB1E, 8 bytes

ÝηODI-Ãн

Try it online! or as a Test suite

Explanation

Ý          # range [0 ... input]
 η         # prefixes
  O        # sum each
   D       # duplicate
    I-     # subtract input from each
      Ã    # keep only the elements in the first list that also exist in the second list
       н   # get the first (smallest)

1

Dyalog APL, 19 bytes

6 bytes saved thanks to @KritixiLithos

{⊃o/⍨o∊⍨⍵+o←0,+\⍳⍵}

Try it online!

How?

o←0,+\⍳⍵ - assign o the first triangular numbers

o/⍨ - filter o by

o∊⍨⍵+o - triangular numbers that summed with produce triangulars

- and take the first


+\⍳⍵ should work instead of what you are using to generate the triangular numbers.
Kritixi Lithos

I think works instead of ⌊/
Kritixi Lithos



1

Add++, 68 bytes

L,RBFEREsECAAx$pBcB_B]VARBFEREsB]GEi$pGBcB*A8*1+.5^1%!!@A!@*b]EZBF#@

Try it online!, or see the test suite!

Even Java is beating me. I really need to add some set commands to Add++

How it works

L,    - Create a lambda function
      - Example argument:  8
  R   - Range;     STACK = [[1 2 3 4 5 6 7 8]]
  BF  - Flatten;   STACK = [1 2 3 4 5 6 7 8]
  ER  - Range;     STACK = [[1] [1 2] ... [1 2 3 4 5 6 7 8]
  Es  - Sum;       STACK = [1 3 6 10 15 21 28 36]
  EC  - Collect;   STACK = [[1 3 6 10 15 21 28 36]]
  A   - Argument;  STACK = [[1 3 6 10 15 21 28 36] 8]
  A   - Argument;  STACK = [[1 3 6 10 15 21 28 36] 8 8]
  x   - Repeat;    STACK = [[1 3 6 10 15 21 28 36] 8 [8 8 8 8 8 8 8 8]]
  $p  - Remove;    STACK = [[1 3 6 10 15 21 28 36] [8 8 8 8 8 8 8 8]]
  Bc  - Zip;       STACK = [[1 8] [3 8] [6 8] [10 8] [15 8] [21 8] [28 8] [36 8]]
  B_  - Deltas;    STACK = [-7 -5 -2 2 7 13 20 28]
  B]  - Wrap;      STACK = [[-7 -5 -2 2 7 13 20 28]]
  V   - Save;      STACK = []
  A   - Argument;  STACK = [8]
  R   - Range;     STACK = [[1 2 3 4 5 6 7 8]]
  BF  - Flatten;   STACK = [1 2 3 4 5 6 7 8]
  ER  - Range;     STACK = [[1] [1 2] ... [1 2 3 4 5 6 7 8]]
  Es  - Sum;       STACK = [1 3 6 10 15 21 28 36]
  B]  - Wrap;      STACK = [[1 3 6 10 15 21 28 36]]
  G   - Retrieve;  STACK = [[1 3 6 10 15 21 28 36] [-7 -5 -2 2 7 13 20 28]]
  Ei  - Contains;  STACK = [[1 3 6 10 15 21 28 36] [0 0 0 0 0 0 0 1]]
  $p  - Remove;    STACK = [[0 0 0 0 0 0 0 1]]
  G   - Retrieve;  STACK = [[0 0 0 0 0 0 0 1] [-7 -5 -2 2 7 13 20 28]]
  Bc  - Zip;       STACK = [[0 -7] [0 -5] [0 -2] [0 2] [0 7] [0 13] [0 20] [1 28]]
  B*  - Products;  STACK = [0 0 0 0 0 0 0 28]
  A   - Argument;  STACK = [0 0 0 0 0 0 0 28 8]
  8*  - Times 8;   STACK = [0 0 0 0 0 0 0 28 64]
  1+  - Increment; STACK = [0 0 0 0 0 0 0 28 65]
  .5^ - Root;      STACK = [0 0 0 0 0 0 0 28 8.1]
  1%  - Frac part; STACK = [0 0 0 0 0 0 0 28 0.1]
  !!  - To bool;   STACK = [0 0 0 0 0 0 0 28 1]
  @   - Reverse;   STACK = [1 28 0 0 0 0 0 0 0]
  A   - Argument;  STACK = [1 28 0 0 0 0 0 0 0 8] 
  !   - Not;       STACK = [1 28 0 0 0 0 0 0 0 0]
  @   - Reverse;   STACK = [0 0 0 0 0 0 0 0 28 1]
  *   - Multiply;  STACK = [0 0 0 0 0 0 0 0 28]
  b]  - Wrap;      STACK = [0 0 0 0 0 0 0 0 [28]]
  EZ  - Unzero;    STACK = [[28]]
  BF  - Flatten;   STACK = [28]
  #   - Sort;      STACK = [28]
  @   - Reverse;   STACK = [28]

1

R, 46 44 43 41 bytes

function(x,y=cumsum(0:x))y[(x+y)%in%y][1]

Try it online!

An anonymous function with one mandatory argument, x; computes first x+1 triangular numbers as an optional argument to golf out a few curly braces. I used choose before I saw Luis Mendo's Octave answer.

I shaved off a few bytes of Luis Mendo's answer but forgot to use the same idea in my answer.





0

Clojure, 74 bytes

#(nth(for[t[(reductions +(range))]i t :when((set(take 1e5 t))(+ i %))]i)0)
#(nth(for[R[reductions]i(R + %(range)):when((set(R - i(range 1e5)))0)]i)0)

Pick your favourite :) Loops might be shorter...


0

Python 2, 82 bytes

f=lambda n,R=[1]:n-sum(R)and f(n,[R+[R[-1]+1],R[1:]][sum(R)>n])or sum(range(R[0]))

Try it online

This was created by modifying this answer from the related question.


works not for 8192
Jörg Hülsermann

It doesn't work for that on the related question either, because of the recursion depth. I'm not sure what the consensus is on that.
mbomb007

Some other answers have the same problem. I give only the info
Jörg Hülsermann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.