Python

순서쌍의 개수 풀이 def solution(n): return len([i for i in range(1, n+1) if n%i==0]) 나누어 떨어지면 순서쌍에 해당된다. 리스트를 만들고 리스트의 길이를 리턴한다. 다른 풀이 def solution(n): return len(list(filter(lambda v: n % (v+1) == 0, range(n)))) filter(function, iterator) 함수를 사용해서 iterator 값을 함수에 넣어서 true인 값을 리스트로 만든다. 0부터 n-1까지의 값들 중에 나누어 떨어지는 값을 필터링한다. 진료순서 정하기 풀이 def solution(emergency): li = sorted(emergency, reverse=True) return [..
숨어있는 숫자의 덧셈(1) 풀이 def solution(my_string): return sum([int(i) for i in my_string if i in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]]) 인덱스 바꾸기 풀이 def solution(my_string, num1, num2): s = list(my_string) s[num1], s[num2] = s[num2], s[num1] return ''.join(s) list(my_string)으로만 해도 리스트로 변경된다. swap()함수를 따로 사용할 필요 없이 파이썬에서는 문자를 서로 바꾸는 문법을 지원한다. 특정 문자 제거하기 풀이 def solution(my_string, letter): s =..
최빈값 구하기 풀이 def solution(array): count = [0]*(max(array)+1) for i in array: count[i] += 1 alot = -1 for i in count: if alot < i: alot = i return count.index(alot) if count.count(alot) == 1 else -1 코딩을 C로 시작한 터라.. 이런 방법밖에는 생각나지 않았다.. array의 최대값 크기만큼 count 배열을 생성한다. array의 값이 나올 때마다 count 배열의 인덱스에서 +1을 한다. count 배열의 가장 큰 값이 최빈값이다. 가장 큰 값이 2개 이상이면 -1을 리턴한다. 다른 풀이 def solution(array): while len(array..
피자 나눠 먹기(2) 풀이 import math def solution(n): return n/math.gcd(6, n) 6과 n의 최소공배수를 6으로 나눈 값이 답이다. 파이썬 3.9부터 최소공배수를 구하는 lcm함수를 지원하는데, 프로그래머스의 버전이 3.8.5이기 때문에 lcm 함수가 지원되지 않는다. 따라서 최소공배수는 6*n/gcd(6,n) 이다. 답은 6*n/gcd(6,n)/6을 구하면 되는데, 약분해서 n/gcd(6,n)을 계산한다. 피자 나눠 먹기(3) def solution(slice, n): return n//slice if n%slice==0 else n//slice+1 n/slice의 값이 나누어 떨어지면 n/slice의 몫이 값이 된다. 나누어 떨어지지 않으면 한 판을 더 시키면 ..
짝수의 합 def solution(n): return sum([i for i in range(2, n+1, 2)]) 리스트 컴프리헨션 사용 리스트의 값들을 모두 더해주는 sum 함수 사용 배열의 평균값 def solution(numbers): return sum(numbers)/len(numbers) 리스트의 합을 반환하는 sum 함수 사용 리스트의 길이를 반환하는 len 함수 사용 피자 나눠 먹기(1) def solution(n): return n//7+1 if n%7 else n//7 나는 코드 그대로 생각해서 이렇게 풀었는데 n을 7로 나눠서 0이면 n//7을 하고 나머지가 있으면 n//7+1로 계산하여 리턴함 def solution(n): return (n - 1) // 7 + 1 다른 풀이에 수..
짝수는 싫어요 풀이 def solution(n): return [x for x in range(1,n+1,2)] 리스트 컴프리헨션 사용 나머지 구하기 풀이 def solution(num1, num2): return divmod(num1, num2)[1] # return num1%num2 처음에 %연산자를 사용해 나머지를 구했다. 다른 풀이를 보니 divmod 함수를 사용했다. x = divmod(10, 3) print(x) # (3, 1) divmod 함수는 나머지와 몫을 한 번에 구해 튜플을 리턴한다. 두 번째 인자에 0을 넣으면 에러를 반환한다. (0으로 나눌 수 없으므로) 작은 수에서는 //와 %연산자를 사용하는 것이 빠르고 큰 수를 대할때는 divmod 함수를 사용하는 것이 빠르다. 중앙값 구하기..
진짜.. 코딩을 다 까먹었다는 것에 현타가 와서 다시 코딩을 좀 잡아보려고 합니다. 지금 짤 수 있는 코드라고는 테라폼 코드밖에 없길래.. 프로그래머스 0레벨 풀면서 파이썬 문법 위주로 잡아보려고 합니다. 마침 4문제씩 25일간 푸는 챌린지가 있길래 도전 해볼게요. 파이팅. 문자열 돌리기 풀이 str = input() for i in str: print(i) 다른 풀이 print('\n'.join(input())) join 함수를 이용해서 '\n'을 리스트 사이에 하나씩 넣어준다. 두 수의 나눗셈 def solution(num1, num2): return int(num1 / num2 * 1000) 함수화 된 코드는 굳이 변수에 담지 않더라도 return 값으로 주면, 차후에 x = solution(som..
su-mmer
'Python' 태그의 글 목록