본문 바로가기

알고리즘/백준-파이썬

[백준] 9613번 (python 파이썬)

https://www.acmicpc.net/problem/9613

 

9613번: GCD 합

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진

www.acmicpc.net

 

import itertools
import sys

def get_gcd(n, m):
  while m != 0:
    r = n % m
    n = m
    m = r
  return n

testcase = int(sys.stdin.readline().strip())
for _ in range(testcase):
  arr = list(map(int, sys.stdin.readline().split()))[1:]
  com = itertools.combinations(arr, 2)
  print(sum(map(lambda item: get_gcd(item[0], item[1]), com)))

 

map() 함수를 사용함에 있어서

map(함수1, 이터러블) 에서 함수1의 매개변수로 이터러블의 요소가 하나씩 전달된다.

 

만약 2개이상의 매개변수를 입력받는 함수를 map()함수의 첫 번째 매개변수로 전달하려면 어떻게 해야될까?

=> 람다로 감싸면 된다.

map( lambda item: 함수2(item[0], item[1]), 이터러블)