728x90

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A562649 Dog 2014-03-20 18:06:00 Sick NULL Spayed Female
A412626 Dog 2016-03-13 11:17:00 Normal *Sam Neutered Male
A563492 Dog 2014-10-24 14:45:00 Normal *Sam Neutered Male
A513956 Dog 2017-06-14 11:54:00 Normal *Sweetie Spayed Female

보호소에 들어온 동물의 이름은 NULL(없음), *Sam, *Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
728x90
728x90

문제 설명

다음은 어느 자동차 대여 회사에서 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.

Column nameTypeNullable
CAR_ID INTEGER FALSE
CAR_TYPE VARCHAR(255) FALSE
DAILY_FEE INTEGER FALSE
OPTIONS VARCHAR(255) FALSE

자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다. 자동차 옵션 리스트는 콤마(',')로 구분된 키워드 리스트(옵션 리스트 값 예시: '열선시트', '스마트키', '주차감지센서')로 되어있으며, 키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 가 있습니다.


문제

CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.


예시

예를 들어 CAR_RENTAL_COMPANY_CAR 테이블이 다음과 같다면

CAR_IDCAR_TYPEDAILY_FEEOPTIONS
1 세단 16000 가죽시트,열선시트,후방카메라
2 SUV 14000 스마트키,네비게이션,열선시트
3 SUV 22000 주차감지센서,후방카메라,네비게이션

'네비게이션' 옵션이 포함된 자동차는 자동차 ID가 2, 3인 자동차이고, 자동차 ID를 기준으로 내림차순 정렬하면 다음과 같은 결과가 나와야 합니다.

CAR_IDCAR_TYPEDAILY_FEEOPTIONS
3 SUV 22000 주차감지센서,후방카메라,네비게이션
2 SUV 14000 스마트키,네비게이션,열선시트

 


나의 풀이

헉쓰 따끈따끈한 신상 문제,,!

SELECT CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%' 
ORDER BY CAR_ID DESC

  LIKE 명령어와 %를 사용하여 네비게이션이 들어있는 options를 추출하면 된다.

728x90
728x90

문제 설명

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.


제한사항
  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.

입출력 예numbersresult
[2,1,3,4,1] [2,3,4,5,6,7]
[5,0,2,7] [2,5,7,9,12]

입출력 예 설명

입출력 예 #1

  • 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
  • 3 = 2 + 1 입니다.
  • 4 = 1 + 3 입니다.
  • 5 = 1 + 4 = 2 + 3 입니다.
  • 6 = 2 + 4 입니다.
  • 7 = 3 + 4 입니다.
  • 따라서 [2,3,4,5,6,7] 을 return 해야 합니다.

입출력 예 #2

  • 2 = 0 + 2 입니다.
  • 5 = 5 + 0 입니다.
  • 7 = 0 + 7 = 5 + 2 입니다.
  • 9 = 2 + 7 입니다.
  • 12 = 5 + 7 입니다.
  • 따라서 [2,5,7,9,12] 를 return 해야 합니다.

나의 풀이

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            answer.append(numbers[i] + numbers[j])
    answer = list(set(answer))
    answer.sort()
    return answer
  • 이중반복문으로 서로 다른 두 개의 숫자 뽑아내고, 둘을 합친 뒤 정답 배열에 삽입합니다.
  • 정답 배열의 중복을 제거하고 정렬합니다.

set() -> 중복제거

sort() -> 정렬


다른 사람 풀이

from itertools import combinations
def solution(numbers):
    return sorted(list(set([sum([i,j]) for i,j in combinations(numbers,2)])))

combinations 함수를 사용하여 for문에서 numbers의 값 중 2개를 랜덤하게 뽑고 이를  i와 j에 넣어 더한 후 set을 사용하여 중복 값은 제거 한후 리스트로 정렬한 아주 간단하게 푼 풀이이다. 

combinations() 함수에 관한 설명은 https://eesko.tistory.com/164  

여기에 설명해놓았다.

728x90
728x90

문제 설명

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

숫자영단어
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

제한사항
  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

입출력 예sresult
"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567
"123" 123

입출력 예 설명

입출력 예 #1

  • 문제 예시와 같습니다.

입출력 예 #2

  • 문제 예시와 같습니다.

입출력 예 #3

  • "three"는 3, "six"는 6, "seven"은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.
  • 입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.

입출력 예 #4

  • s에는 영단어로 바뀐 부분이 없습니다.

나의 풀이

def solution(s):
    num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
    
    answer = s
    
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)

num_dic.items()는 아래와 같이 Key와 Value의 쌍을 튜플로 묶은 값을 리스트형태로 돌려준다. key, value 값이 둘 다 존재하는지 확인 가능

 

다른 사람의 풀이

def solution(s):
    words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

    for i in range(len(words)):
        s = s.replace(words[i], str(i))

    return int(s)

방식은 같지만 딕셔너리가 아닌 리스트로 묶어주었다.

728x90
728x90

문제 설명

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

  1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
  3. 2에서 나온 배열의 3번째 숫자는 5입니다.

배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한사항
  • array의 길이는 1 이상 100 이하입니다.
  • array의 각 원소는 1 이상 100 이하입니다.
  • commands의 길이는 1 이상 50 이하입니다.
  • commands의 각 원소는 길이가 3입니다.
입출력 예arraycommandsreturn
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
입출력 예 설명

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

 

풀이

def solution(array, commands):
    answer = []
    for i in range(len(commands)):
        arr = array[commands[i][0]-1:commands[i][1]]
        arr.sort()
        answer.append(arr[commands[i][2]-1])
    return answer

[1] commands의 길이만큼 연산을 반복할 것이다.
[2] commands의 i번째 원소가 [a,b,c]라고 하면 array[a-1:b]를 정렬했을 때, c 번째로 작은 수, 즉 인덱스가 c-1인 수를 answer에 append 할 것이다.
[3] 여기서 a == commands[i][0], b == commands[i][1], c == commands[i][2]이다.

def solution(array, commands):
    answer = []
    for command in commands:
        i, j, k = command[0], command[1], command[2]
        slice = array[i-1:j] 
        slice.sort() 
        answer.append(slice[k-1]) 
    return answer

위와 비슷한데, command(i, j, k)를 직접 뽑아서 계산한 것이다. 

[1] command의 i, j, k를 추출합다.

[2]  i,j부터 slice를 합니다.

[3] sort()를 이용해 list를 정렬합니다. 

[4] k번째에 있는 수를 indexing 합니다.

 


다른 사람의 풀이

def solution(array, commands):

    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
def solution(array, commands):
    return list(map(lambda commands : sorted(array[commands[0]-1:commands[1]])[commands[2]-1], commands))

[1] commands 배열에 map, lambda을 적용해 i, j, k를 뽑았습니다.  i= x[0], j = x[1], k = x[2] 

[2] x[0], x[1]로 slice를 합니다.

[3] 그 결과를 sorted()를 이용해 정렬합니다.

[4] x[2]를 이용해 정렬합니다.

[5] 결과는 list()로 출력합니다.

728x90
728x90

문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

제한 조건
  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
입출력 예stringsnreturn
["sun", "bed", "car"] 1 ["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]
입출력 예 설명

입출력 예 1
"sun", "bed", "car"의 1번째 인덱스 값은 각각 "u", "e", "a" 입니다. 이를 기준으로 strings를 정렬하면 ["car", "bed", "sun"] 입니다.

입출력 예 2
"abce"와 "abcd", "cdx"의 2번째 인덱스 값은 "c", "c", "x"입니다. 따라서 정렬 후에는 "cdx"가 가장 뒤에 위치합니다. "abce"와 "abcd"는 사전순으로 정렬하면 "abcd"가 우선하므로, 답은 ["abcd", "abce", "cdx"] 입니다.

 

풀이

def solution(strings, n):
    return sorted(strings, key = lambda x:(x[n],x))
def solution(strings, n):
    return sorted(sorted(strings), key=lambda x: x[n])
def solution(strings, n):
    return sorted(sorted(strings), key=lambda strings: strings[n])

lambda에 튜플을 넣어줌으로써 sort의 우선순위를 정할 수 있다.

lambda함수를 이용해서 x에서 n번째 값을 기준으로 정렬한다.

세개의 풀이는 모두 같다! 그냥 정렬을 한번 더 해주는지, 람다의 인자값을 뭘로 하는지가 달라진다.

정리

  1. sort, sorted에 key인자를 넣어줌으로써 정렬 기준을 정할 수 있다.
  2. key 기준으로 정렬을 할 경우 오직 key 기준으로만 정렬을 한다.
  3. key이외의 나머지 요소에 대해선 정렬되지 않음.
  4. lambda를 이용한 key 설정에서 튜플을 넣어줌으로써 정렬의 우선순위를 지정할 수 있다.
  5. 이때 함수는 lambda를 사용할 수 있다.
  6. key값을 기준으로 정렬되고 기본값은 오름차순이다.
  7. 먼저 x[n]에 대하여 정렬하고 x에 대하여도 정렬해야하니 (x[n],x)라고 적어준다.
  8. 만약 내림차순으로 할 경우 -부호를 사용하면 역순으로 출력할수 있다.
  9. {lambda 인자: (정렬 기준1, 정렬 기준2)} 형식 사용한다.
  10. 원소 자체인 strings을 입력하면 사전 순서대로 정렬을 한다는 의미이다.
  11. 때문에 strings[n]로 정렬 후 이 문자가 같을 땐 strings 즉, 사전 순서대로 정렬한다는 의미이다.
728x90
728x90

문제 설명

비밀지도

네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.

  1. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다.
  2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.
  3. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다.
  4. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.

네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.

입력 형식

입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.

  • 1 ≦ n ≦ 16
  • arr1, arr2는 길이 n인 정수 배열로 주어진다.
  • 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ≦ x ≦ 2n - 1을 만족한다.

출력 형식

원래의 비밀지도를 해독하여 '#', 공백으로 구성된 문자열 배열로 출력하라.

입출력 예제

매개변수값
n 5
arr1 [9, 20, 28, 18, 11]
arr2 [30, 1, 21, 17, 28]
출력 ["#####","# # #", "### #", "# ##", "#####"]
매개변수값
n 6
arr1 [46, 33, 33 ,22, 31, 50]
arr2 [27 ,56, 19, 14, 14, 10]
출력 ["######", "### #", "## ##", " #### ", " #####", "### # "]

 


나의 풀이

def solution(n, arr1, arr2):
    answer = []
    arr1_bin = []
    arr2_bin = []
    for i in range(n):
        arr1_bin.append(bin(arr1[i])[2:])
        arr2_bin.append(bin(arr2[i])[2:])
        arr1_bin[i] = ('0' * (n-len(arr1_bin[i]))) + arr1_bin[i]
        arr2_bin[i] = ('0' * (n-len(arr2_bin[i]))) + arr2_bin[i]
    
        tmp = ''
        for p in range(n):
            if arr1_bin[i][p] == '1' or arr2_bin[i][p] == '1':
                tmp += '#'
            elif arr1_bin[i][p] == '0' and arr2_bin[i][p] == '0':
                tmp += ' '
        answer.append(tmp)
        
    return answer

arr1과 arr2가 2진수가 아닌 10진수로 표현되었기 때문에 먼저 이를 2진수로 변환해준다.

2진수로 변환하는 건 내장함수인 bin 함수를 사용하였다. bin 함수는 10진수를 2진수로 변환해주는 함수이다.

주어진 매개변수를 2진수로 변환하면서 앞에 binary를 의미하는 '0b'가 붙는다.
따라서 이진수만 뽑아내기 위해서는 앞의 '0b'를 제외하기 위해 인덱싱하여 사용했다. >> [2: ]

이 뒤에서 조금 고민이 생겼는데, 보물지도 형태라면 00010과 같이 앞자리에도 0이 포함되도록 데이터를 조작해야 했다.

주의해야 할 점이 있다면 모든 이진수가 str형태로 되어있다는 점이다.
따라서 arr1_bin과 arr2_bin 둘 중 하나에 '1'이 포함된다면 '#'을, 그렇지 않으면 공백으로 처리하여 보물지도 배열을 완성하였다.

 

다른 사람의 풀이

def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:])
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer
    
-------------------------------------------------------------------------------

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n):
        tmp = bin(arr1[i] | arr2[i])
        # tmp결과 ex) '0b1101'
        tmp = tmp[2:].zfill(n)
        # tmp결과 ex) '01101'
        tmp = tmp.replace('1','#').replace('0',' ')
        # tmp결과 ex) ' ## #'
        answer.append(tmp)
    
    return answer

다른 사람들의 풀이를 보면 비슷하다는 것을 알 수 있을 것이다. 

 

다른 사람 풀이

(1) or 비트 연산을 하고, 2진법 숫자로 바꿔준다. (or연산은 | , xor연산은 ^, and연산은 & 라고 한다.)

(2) 2진법( ex) '0b1101')의 앞에 2개를 제거하고, zfill을 사용해서 앞에 0이 올 수 있도록 한다. (n=5 일떄, 11111은 문제 없으나 글자 수가 n이 안되는 1111은 앞에 0으로 채워줘야 한다. zfill(n)을 하면 n만큼 부족한 부분을 앞에 0으로 채워준다.)

(3) 1을 #으로, 0을 공백으로 치환한다.

728x90
728x90

문제 설명

한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.

한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.

제한사항

  • 3 ≤ number의 길이 ≤ 13
  • 1,000 ≤ number의 각 원소 ≤ 1,000
  • 서로 다른 학생의 정수 번호가 같을 수 있습니다.

입출력 예

numberresult

[-2, 3, 0, 2, -5] 2
[-3, -2, -1, 0, 1, 2, 3] 5
[-1, 1, -1, 1] 0

입출력 예 설명

입출력 예 #1

  • 문제 예시와 같습니다.

입출력 예 #2

  • 학생들의 정수 번호 쌍 (-3, 0, 3), (-2, 0, 2), (-1, 0, 1), (-2, -1, 3), (-3, 1, 2) 이 삼총사가 될 수 있으므로, 5를 return 합니다.

입출력 예 #3

  • 삼총사가 될 수 있는 방법이 없습니다.

 

나의 풀이

from itertools import combinations

def solution(number):
    arr = list(combinations(number,3))
    
    return sum([sum(a) == 0 for a in arr])

다른 사람의 풀이

import itertools

def solution(number):
    answer = 0
    number_com = itertools.combinations(number,3)
    answer = sum([1 if sum(num)==0 else 0 for num in number_com])
    
    return answer
def solution (number) :
    from itertools import combinations
    cnt = 0
    for i in combinations(number,3):
        if sum(i) == 0 :
            cnt += 1
    return cnt

이 문제는 접근 조차 힘들었다. 일단.. 파이썬은 모듈이 참 많다고 느꼈다. 

 

Combination

: 어떤 쌍(pair)를 return 하고 싶을때 combination을 활용하면 쉽게 구할 수 있다.

import itertools
#usage
itertools.combinations('배열' , '배열 안에서 몇개의 쌍 추출할것인지') 
728x90

+ Recent posts