N을 나누지 않는 가장 작은 수를 찾으십시오


50

이 문제는 제목에 기본적으로 모든 있다는 간단하다 : 당신은 양의 정수 부여하고 N을 당신은의 제수없는 작은 양의 정수 반환해야합니다 N을 .

예 : N = 24 의 제수 는 1, 2, 3, 4, 6, 8, 12, 24입니다. 해당 목록에없는 가장 작은 양의 정수는 5 이므로 솔루션에서 찾은 결과입니다.

이것은 OEIS 시퀀스 A007978 입니다.

규칙

당신은 쓸 수 있습니다 프로그램이나 기능을 하고, 우리의 사용 표준 방법 입력을 수신하고 출력을 제공합니다.

모든 프로그래밍 언어를 사용할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다.

이것은 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.

테스트 사례

처음 100 개의 용어는 다음과 같습니다.

2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 
3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 
2, 3, 2, 4, 2, 3, 2, 3, 2, 7, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 
3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3

특히 입력 12 에 대해 답이 작동하는지 확인하십시오 .이 경우 결과가 입력보다 큽니다.

그리고 더 큰 테스트 사례의 경우 :

N          f(N)
1234567    2
12252240   19
232792560  23

샘플 출력 문자열을 숫자 벡터로 바꾸고 24 열로 서식을 지정하면 홀수 편차를 제외하고 매우 반복적이라는 것을 깨달았습니다.
Carcigenicate

24는 0 mod 2, 3, 4이기 때문에 숫자가 4보다 큰 열에서만 차이가 있습니다. 너비 120에서 훨씬 더 반복적입니다.
CalculatorFeline

답변:


18

Mathematica, 19 바이트 (UTF-8 인코딩)

1//.x_/;x∣#:>x+1&

이름이없는 함수는 0이 아닌 정수 인수를 사용하고 양의 정수를 반환합니다. 반쯤 지나가는 세로 막대는 실제로 3 바이트 문자 U + 2223이며 Mathematica의 나누기 관계를 나타냅니다. 설명:

1                   Starting with 1,
 //.                apply the following rule until it stops mattering:
    x_                if you see a number x
      /;x∣#           such that x divides the function argument,
           :>x+1      replace it with x+1.
                &   Cool, that's a function.

추가하기 위해 편집 : ngenisis //.는 기본적으로 최대 65536 번 반복 한다고 지적합니다 . 따라서이 구현은 1에서 65538 사이의 정수의 최소 공통 배수보다 작은 모든 입력 번호 (특히 최대 28436 자리의 모든 번호)에서 작동하지만 기술적으로 모든 숫자에는 해당되지 않습니다. 하나는 대체 할 수 x//.y와 함께 ReplaceRepeated[x,y,MaxIterations->∞]34 추가 바이트의 비용으로 분명이 결함을 해결하기 위해,하지만.


사용하지 않고 루프 매우 흥미로운 방법은 For, While, 등
ngenisis

5
이 사이트에서 배웠습니다! 나는 Mathematica에 대해 더 많이 배우는 것을 즐기고 있습니다 (시간표에 그것을 정당화 할 수 있습니까 ...?).
Greg Martin

3
Mathematica O_o
Mama Fun Roll

2
대문자와 대괄호가 부족하지 않도록하십시오.)
Greg Martin


14

Pyth, 3 바이트

f%Q

기본적으로 ( 반복 변수가있는 곳 )가 true가 f될 때까지 코드를 반복합니다.%QTQ % TT

여기에서 온라인으로 사용해보십시오.


2
문제를 보고이 대답을 게시하고 여기에 게시하여 귀하의 문제를 발견했습니다. 잘 했어!
isaacg

나는 이것을 썼고 나 자신에 대해 .V1In%Qb0bB굉장히 느꼈다 : 당신의 대답을 보았고, 더 이상 굉장히 기분이 좋지 않습니다.
John Red

@ JohnRed Lol, Pyth의 내장 기능에 익숙해 져야한다고 생각합니다.
busukxuan

14

자바 스크립트 (ES6), 25 23 바이트

f=(n,k)=>n%k?k:f(n,-~k)

참고 : 여기서 흥미로운 점 은 첫 번째 반복 에서 k매개 변수가 nihilo 에서 초기화 된다는 것 입니다. 때문에 작품 n % undefined입니다 NaN(예상대로 falsy가)와 -~undefined같다 1. 다음 반복에서는 -~k본질적으로와 같습니다 k+1.

테스트


정확히 내가 가진 것. 더 짧은 것이 가능하다면 놀랄 것입니다
ETHproductions

@ETHproductions 두 번째로 생각하면 더 짧은 것이 있습니다. :-)
Arnauld 2019 년

5
음 그건 ... 어 ... 와우
ETHproductions

13

파이썬, 43 36 35 바이트

f=lambda n,d=2:d*(n%d>0)or f(n,d+1)


11

R, 28 바이트

매우 간단하고 멋진 것은 없습니다. 표준 입력에서 입력을 받고, 값이 증가 T할 때까지 i모듈은 T제로이다.

i=scan()
while(!i%%T)T=T+1
T

좀 더 멋진 것을 원한다면 29 바이트에 대해 다음이 있습니다 .

i=scan()
match(0,!i%%1:(i+1))

설명 :

i=scan(): istdin에서 읽습니다 .

1:(i+1): 모든 정수를 생성 1i+1합니다 ( +1의 경우 회계 12).

i%%1:(i+1) :리스트의 모든 숫자로 입력을 모듈로합니다.

!i%%1:(i+1): 결과 목록을 무효화합니다. 이 암시 적으로 그러한 즉, 논리적 형식으로 변환 0입니다 FALSE및 0이 있습니다 TRUE. 부정한 후, TRUE가치는 FALSE그 반대가된다. 이제 0이 아닌 모든 원래 값은로 코딩됩니다 FALSE.

match(0,!i%%1:(i+1)): 0목록에서 첫 번째 인스턴스의 인덱스를 반환합니다 . 0는 리스트 FALSE에서 첫 번째의 인덱스를 반환하는데 FALSE, 이는 모듈로 연산에서 0이 아닌 첫 번째 값입니다. 원래 목록은에서 시작 했으므로 1지수는 가장 작은 비제 수 값과 같습니다.


which.min좋아요, 사용을 제안하고 싶었지만 편집 내용을 보았고 match비슷한 일을 하는 것 같습니다 .
JAD

2
또한 루프 T를 사용하기 전에 정의해야 할 필요성을 줄여주는 멋진 트릭 while.
JAD

트윗 담아 가기 벡터화 된 접근법이 while접근법 보다 짧을 수있는 방법을 찾을 수 없습니다.이 방법은 큰 N의 경우 메모리를 많이 사용하므로 괜찮습니다. T트릭은 골프에는 훌륭하지만 실제 프로그래밍에는 끔찍한 취급 중 하나입니다. (물론 F필요할 때도 사용할 수 있습니다 0.)
rturnbull

%% 연산자로 어떻게 작동하는지 잘 모르겠지만 1 : (i + 1) 대신 0 : i + 1을 사용하여 2 바이트를 절약 할 수 있습니다.
antoine-sac

@ antoine-sac 불행히도, %%보다 우선 +하므로 (0:i+1),와 같은 바이트 수의 괄호가 여전히 필요 1:(i+1)합니다. 나는 실제로 전자를 원래 가지고 있었지만, 읽기 쉽도록 후자를 바꿨다.
rturnbull

10

하스켈, 26 바이트

f n=until((>0).mod n)(+1)1

모두 잊어 버려요 until!


9

Brachylog , 10 바이트

~{=#>:A'*}

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

이것은 Fatalize의 원래 솔루션과 매우 유사하지만 짧았습니다. 이후 Fatalize는 다른 방법을 통해이 알고리즘과 관련된 다른 알고리즘으로 전환 했으므로 직접 설명해야합니다.

~{=#>:A'*}
~{       }    inverse of the following function:
  =           try possible values for the input, if it's unbound
   #>         the input is a positive integer
     :A'*     there is no A for which the input times A is the output

"input"과 "output"을 바꾸어 함수를 반전 시키면, 꽤 합리적인 알고리즘을 얻을 수 있습니다. (어색한 방법으로 표현할 수 있습니다.) "입력을 생성하기 위해 어떤 것도 곱할 수없는 것" Brachylog는 모든 입력을 알고 있지 않으면 부동 소수점 계산을 수행하지 않으므로 정수 A 만 고려합니다.


1
그렇게 생각하지 마십시오. 깔끔합니다!
Fatalize


8

COW, 174 바이트

oomMOOMMMmoOmoOmoOMMMmOomOoMoOMMMmoOmoOmoOMMMmOoMOOmoO
MOomoOMoOmOoMOOmoOmoomoOMOOmOoMoOmoOMOomoomOomOoMOOmOo
moomoOMOomoomoOmoOMOOmOomOomOomOoOOMOOOMOomOOmoomOomOo
mOomOomOomoo

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

이 코드는 부분적으로 만 내 코드입니다-그것은 brainfuck에서 포팅모듈러스 알고리즘을 구현합니다 . 나머지 코드는 저의 것입니다. 그러나 모듈러스 알고리즘을 작성하지 않았으므로 어떻게 작동하는지 실제로 조사하지 않았으며 코드의 해당 부분을 문서화 할 수 없습니다. 대신, 일반적인 고장과 함께 코드가 작동하는 이유에 대해 좀 더 자세히 설명하겠습니다.

코드 분석

oom                          ;Read input into [0].
MOO                          ;Loop while [0].  We never change [0], so the program only terminates forcibly after a print.
  MMMmoOmoOmoOMMMmOomOo      ; Copy [0] to [3] and navigate to [1].
  MoOMMMmoOmoOmoOMMM         ; Increment [1], and copy it to [4]
  mOo                        ; Navigate back to [3].
  MOO                        ; Modulus algorithm.  Direct port of brainfuck algorithm.
    moOMOomoOMoOmOo
    MOO
      moO
    moo
    moO
    MOO
      mOoMoOmoOMOo
    moo
    mOomOo
    MOO
      mOo
    moo
    moOMOo
  moo                        ; End modulus algorithm.
  moOmoO                     ; Navigate to [5].  This contains our modulus.
  MOO                        ; Only perform these operations if [5] is non-zero -- i.e. [0] % [1] != 0
    mOomOomOomOoOOMOOOMOomOO ;  Navigate to [1], print its contents, then error out.
  moo                        ; End condition
  mOomOomOomOomOo            ; Since we're still running, [0] % [1] == 0, so navigate back to [0] and try again.
moo                          ;End main loop.

설명

코드는 먼저 정수를 [0]으로 읽습니다. 메인 루프 (2 ~ 26 행)의 각 반복은 [1] 씩 증가한 다음 필요한 모든 것을 모듈러스 알고리즘에 복사하여 결과를 [5]에 내뿜습니다. [5]에 값이 있으면 [1]이 인쇄해야하는 숫자입니다. 인쇄 한 다음 프로그램을 강제 종료합니다.

COW는 brainfuck 파생물이므로 brainfuck의 작동 방식 (무한한 테이프 스트립)과 비교적 유사하게 작동합니다. 현재 테이프 값이 0이 아닌 동안 왼쪽 또는 오른쪽으로 이동, 증가 또는 감소 및 "루프"할 수 있습니다. COW와 함께 COW에는 몇 가지 유용한 기능이 있습니다.

(0) moo -- Equivalent to ]
(1) mOo -- Equivalent to <
(2) moO -- Equivalent to >
(3) mOO -- No equivalent.  Evaluate current tape value as instruction from this list.
(4) Moo -- If tape is 0, equivalent to ,; if tape is non-zero, equivalent to .
(5) MOo -- Equivalent to -
(6) MoO -- Equivalent to +
(7) MOO -- Equivalent to [
(8) OOO -- No equivalent.  Set tape (positive or negative) to 0
(9) MMM -- No equivalent.  If register is empty, copy tape to register.  If register is non-empty, paste register to tape and clear register.
(10) OOM -- No equivalent.  Print an integer from tape to STDOUT
(11) oom -- No equivalent.  Read an integer from STDIN and store it on tape

여기서 중요한 관심사는 교육 3, mOO입니다. 인터프리터는 현재 테이프 값을 읽고 해당 테이프 값을 기반으로 명령을 실행합니다. 값이 0보다 작거나 11보다 크거나 3이면 인터프리터는 프로그램을 종료합니다. 우리가 비 분배자를 발견하면 이것을 메인 루프 (및 프로그램 전체)의 빠르고 더티 강제 종료로 사용할 수 있습니다. 우리가해야 할 일은 숫자를 인쇄하고 [1] (with OOO)을 지우고 -1로 감소시킨 MOo다음 -1 명령을 실행 mOO하여 프로그램을 종료하는 것입니다.

이 프로그램의 테이프 자체는 다음과 같이 작동합니다.

[0]  -- Read-in integer from STDIN.
[1]  -- Current divisor to test
[2]  -- Placeholder for modulus algorithm
[3]  -- Temporary copy of [0] for use for modulus algorithm
[4]  -- Temporary copy of [1] for use for modulus algorithm
[5]  -- Placeholder for modulus algorithm.  Location of remainder at end of loop.
[6]  -- Placeholder for modulus algorithm
[7]  -- Placeholder for modulus algorithm

모듈러스 알고리즘은 작업 종료시 자연스럽게 [2], [3], [6] 및 [7]을 지 웁니다. [4]의 내용은 4 행의 레지스터 붙여 넣기로 덮어 쓰고 [0]을 [1]로 나눌 수 있으면 [5]는 0이므로 지울 필요가 없습니다. [5]가 0이 아닌 경우 23 행에서 강제 종료되므로 걱정할 필요가 없습니다.



7

젤리 , 5 바이트

1%@#Ḣ

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

설명:

1%@#Ḣ
1  #      Find the first … numbers, counting up from 1, such that
 %@       dividing those numbers into … gives a truthy remainder
    Ḣ     then return the first

이것은 끔찍한 학대입니다 #. 이 프로그램에는 많은 연산자가 있지만 많은 피연산자가 없습니다. #정말 1어떤 이유로 명시 적으로 제공 되기를 원합니다 (그렇지 않으면 입력을 기본값으로 설정하려고 시도합니다). 그러나 프로그램에 지정되지 않은 다른 모든 것은 프로그램의 입력으로 기본 설정됩니다. 예를 들어 24를 입력으로 제공하면이 프로그램은 24를 나누지 않는 처음 24 개의 숫자를 찾은 다음 첫 번째 숫자를 반환합니다.


젠장, 젤리! Pyth가 오늘 당신을 이깁니다! : D
John Red

ASCII 전용 :2%@1#
Outgolfer Erik

7

C, 32 35 바이트

i;f(x){for(i=1;x%++i<1;);return i;}

편집 : i=1루프에 추가

용법

main(c,v)char**v;{printf("%d",f(atoi(*++v)));}

풀 프로그램 버전, 64 바이트 :

main(c,v)char**v;{*++v;for(c=1;atoi(*v)%++c<1;);printf("%d",c);}

6

C #, 39 37 바이트

n=>{int i=0;while(n%++i<1);return i;}

Martin 덕분에 2 바이트를 절약했습니다!


나는 while (! (n % ++ i)); 더 나은하지만 물론 이것은 코드 골프이며 1 바이트는 1 바이트입니다.
John Hamilton

작동합니까? 나는 0이 자동으로 거짓으로 평가된다는 것을 몰랐다
Alfie Goodacre

아, 나는 C ++로 시도했지만 C #에서는 작동하지 않습니다.
John Hamilton

6

펄, 19 바이트

18 바이트의 코드 + -p플래그.

$_=$_%++$.?$.:redo

그것을 실행하려면 :

perl -pE '$_=$_%++$.?$.:redo' <<< 12252240

자세한 설명이 아닙니다
.- $.기본값은 마지막으로 액세스 한 파일 핸들의 현재 행 번호 (여기서 stdin) 인 특수 변수이므로 첫 번째 입력 행을 읽은 후 1로 설정됩니다
.- $_입력을 보유하고 내재적으로 인쇄됩니다. 끝에 ( -p플래그 감사 ).
- redo(그 맥락에서) 프로그램이 루프에 있다고 간주하고 현재 반복을 다시 실행하십시오 ( $.증가 된 이후 에만 다름).
- $.나누지 않는 가장 작은 숫자 (에 저장된 )를 찾은 경우 그 숫자로 $_설정 $_하고 그렇지 않으면 다음 숫자 (감사)를 시도합니다 redo.


6

옥타브 / MATLAB, 26 24 바이트

@(n)find(mod(n,1:n+1),1)

find(...,1)1첫 번째 인수에서 벡터의 첫 번째 0이 아닌 요소의 색인 ( -based)을 반환합니다 . 첫 번째 주장은 에서 테스트를 시작하기 때문에 인덱스 [n mod 1, n mod 2, n mod 3, n mod 4,...,n mod (n+1)]에 추가해야한다는 의미 입니다. -2 바이트에 대한 @Giuseppe에게 감사드립니다.+11

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


@(n)find(mod(n,1:n+1),1)더 짧지 않습니까?
Giuseppe

정말 감사합니다!
flawr

5

젤리 , 6 바이트

%R;‘TḢ

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

설명:

                                               Assume 24 is our N
 R      Generate all numbers from 1 to N         [1, 2, 3, 4 .., 24]
  ;‘    Attach N+1 to that list (for cases 1,2)  [1, 2, 3, 4 .., 25]
%       And modulo-divide our input by it
        Yields a list with the remainder         [0, 0, 0, 0, 4 ...]
    T   Return all thruthy indexes               [5, 7, ...]
     Ḣ  Takes the first element of that list -->  5

젤리를 모르지만 범위를 생성하기 전에 N을 늘려 바이트를 절약 할 수 있습니까?
Emigna

@Emigna 나도 모른다.;) 나는 그것을 어떻게 알지 못한다 [1, 1, 1, 1, 5, ...].
steenbergh

아, 알겠습니다 N % range (1, N + 1)을 수행하는 것이 가능할 수 있다고 생각했지만 두 경우 모두 N을 늘리면 좋지 않습니다.
Emigna

5

펄 6 , 17 바이트

{first $_%*,1..*}

시도 해봐

넓히는:

{  # bare block lambda with implicit parameter 「$_」

  # return the first value
  first

  # where the block's argument 「$_」 modulus the current value 「*」
  # doesn't return 0 ( WhateverCode lambda )
  $_ % *,
  # ( 「$_ !%% *」 would be the right way to write it )

  # from 1 to Whatever
  1 .. *
}



4

파이썬 2.7.9, 32 바이트

f=lambda n,d=1:n%d>0or-~f(n,d+1)

Ideone에서 테스트

잠재적 인 제수를 재귀 적으로 계산합니다 d. output보다 결과를 재귀 적으로 증가시키는 것이 더 짧습니다 d. 의 오프셋 (offset) 1의 부울에 의해 달성 True같다, 1하지만 이후 d==1항상 제수이며, 출력은 항상 숫자로 변환됩니다.

Python 2.7.9는 allow를 허용하는 데 사용됩니다 0or. 2.7.10으로 시작하는 버전 0or은 8 진수의 시작 으로 구문 분석 을 시도 하고 구문 오류가 발생합니다. Ideone에서 이것을 참조하십시오 .


3

실제로 7 바이트

;÷@uR-m

온라인으로 사용해보십시오! (참고 :이 솔루션은 매우 느리며 대규모 테스트 사례에는 시간이 오래 걸립니다)

설명:

;÷@uR-m
;÷       duplicate N, divisors
  @uR    range(1, N+2)
     -   set difference (values in [1, N+1] that are not divisors of N)
      m  minimum

3

하스켈 , 29 바이트

f n=[k|k<-[2..],mod n k>0]!!0

표현식은 [k|k<-[2..]]단지 무한 목록을 만듭니다 [2,3,4,5,...]. 조건 mod n k>0을 사용 k하면 목록에서 나누지 않는 것만 허용합니다 n. Appending !!00해당 목록 의 첫 번째 항목 (index의 항목)을 반환합니다 .

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


3

Dyalog APL , 8 바이트

1⍳⍨0≠⍳|⊢

1⍳⍨ 첫 트루 인의 위치

0≠ 0이 아닌 값

⍳|... (1)의 분할 나머지 N 으로 나눈

TryAPL 온라인!

참고 : 1과 2에서 작동합니다 .1을 1⍳⍨찾지 못하면 인수의 길이를 1 + 반환합니다.


3

줄리아, 28 바이트

N->findfirst(x->N%x>0,1:N+2)

주 : 이후 1:N+2대형에 대한 메모리 문제가없는 메모리를 할당하지 않습니다 N
- @flawr N+2나를 위해 몇 바이트 저장
@Martin의 제안 저장 1 바이트 -


3

QBIC , 14 바이트

:[a+1|~a%b|_Xb

설명:

:      Read the first cmd line param as a number, called 'a'
[a+1|  FOR (b=1 ; b <= a+1; b++) <-- a+1 for cases a = 1 or 2
~a%b   IF A modulo B ( == 0, implicit)
|_Xb   THEN exit the program, printing b
       [IF and FOR implicitly closed by QBIC]

3

PHP, 30 바이트

for(;$argv[1]%++$i<1;);echo$i;

-r옵션 으로 콘솔에서 실행하는 경우 (thx에서 @ ais523)

php -r 'for(;$argv[1]%++$i<1;);echo$i;' 232792560

32 바이트

<?for(;$argv[1]%++$i<1;);echo$i;

1 바이트를 제거 한 @manatwork 덕분에

33 바이트 (원본)

<?for(;$argv[1]%++$i==0;);echo$i;

3
IIRC <?는 바이트 수의 일부일 필요는 없습니다 (PHP는 명령 줄 모드를 필요로하지 않기 때문에).

3
오래된 트릭 : <1대신에 비교하십시오 ==0.
manatwork

댕 에 도달했습니다 for(;!($argv[1]%$i);$i++);echo$i;. 당신은 내 자연의 진화입니다. 이것은 나의 공감대가 있습니다!
Ismael Miguel

3

Cubix , 14 12 바이트

I2/L/);?%<@O

MickyT 덕분에 2 바이트를 절약했습니다.

시도 해봐

설명

큐브 형태에서 코드는 다음과 같습니다.

    I 2
    / L
/ ) ; ? % < @ O
. . . . . . . .
    . .
    . .

기본적으로 이것은 입력을 받아 카운터를 시작합니다. 그런 다음 입력 계수가 아닌 값을 찾을 때까지 카운터의 각 연속 값을 확인합니다.


I2/L/);?%<@O몇 바이트 더 적습니다. 동일한 일반적인 과정, 다른 경로
MickyT


2

해파리 , 12 10 바이트

p\~~|1
 >i

STDIN에서 입력을 가져 와서 STDOUT으로 출력합니다. 온라인으로 사용해보십시오!

Martin Ender는 2 바이트를 절약했습니다. 감사합니다!

설명

 \~~|
 >i

이 부분은 정의에서 입력 값을 사용하는 함수입니다.

   ~|

~셀에는 함수가 제공되므로 인수를 뒤집습니다. 이진 함수 "left argument modulo ( |) right argument"를 생성합니다. Jellyfish의 내장 모듈로 함수는 역순으로 인수를 취합니다.

  ~~|
  i

~셀에는 값과 함수가 제공되므로 부분적으로 적용됩니다. 이진 함수 "input ( i) modulo right argument"를 생성합니다. 이 함수를 f 라고합시다 .

 \~~|
 >i

\-cell 두 가지 기능을 부여하고, 그래서 반복하지 : 그것은 단항 함수 "증가 (생성 >) 기능까지 F는 이전 및 현재 값에 적용 truthy 0이 아닌 결과를 제공하고 전류 값을 반환을". 이것은 인수가 입력을 나누지 않을 때까지 증가한다는 것을 의미합니다.

p\~~|1
 >i

마지막으로이 함수를 초기 값에 적용 1하고로 결과를 인쇄합니다 p.

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