프로그래머스 | 2차원으로 만들기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(num_list, n): answer = [] for i in range(len(num_list)//n): answer.append(num_list[n*i : n*(i+1)]) return answer 1차원 배열 num_list가 주어지면 n차원 배열로 바꾸는 문제이다. 단순히 n 개씩 잘라 answer에 추가하면 쉽게 풀 수 있다. 이때 n개씩 자르는 부분을 슬라이싱으로 구현해야 하는데 나는 기존 리스트는 건들지 않고 answer에 추가하려 했기 때문에 n*i부터 n*(i+1)..
python | 파이썬에서 순열과 조합 사용하기
·
TIL/python
파이썬에서 순열과 조합을 사용할 수 있는 두 가지 방법을 정리해보려 한다. 먼저, 순열과 조합의 정의를 살펴보면 다음과 같다 순열(permutation): n개 중 r개를 선택하여 순서대로 정렬 ex) 1, 2, 3에서 2개를 선택하여 순서대로 정렬 → (1, 2), (2, 3), (3, 1) (1, 2)와 (2, 1)을 같은 것으로 봄 $_nP_r=\frac{(n-r)!}{n!}$ 조합(combination): n개 중 r개를 선택 (순서 X) ex) 1, 2, 3 에서 2개를 선택 → (1, 2), (2, 1), (2, 3), (3, 2), (1, 3), (3, 1) (1, 2)와 (2, 1)을 다른 것으로 봄 $_nC_r=\frac{(n!}{(n-r)! r!}$ 1) math 라이브러리에 있는 pe..
프로그래머스 | 특정 문자 제거하기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(my_string, letter): answer = '' lms = list(my_string) for i in lms: if i == letter: lms.remove(letter) answer = ''.join(lms) return answer my_string에서 letter를 제거하는 문제이다. my_string이 리스트가 아닌 문자열로 주어지기 때문에 remove를 사용하려고 list로 바꿔 letter를 제거하였다. 하지만 예시는 모두 통과하였으나 제출하면 2개의 테스트..
python | module 'math' has no attribute 'lcm'
·
TIL/오류해결
프로그래머스 문제를 푸는 과정에서 최소공배수가 필요하여 math.lcm을 사용했으나 attributeerror: module 'math' has no attribute 'lcm' 와 같은 오류가 발생하였다. lcm은 python 3.9 버전부터 사용이 가능한 메소드이기 때문에 이럴 때에는 다른 방법으로 최소공배수를 구해야 한다. 두 수가 주어졌을 때 최소공배수는 두 수의 곱을 최대공약수로 나누어 구할 수 있다. $$ lcm(a, b) = \frac{a \times b}{gcd(a, b)} $$ 예를 들어, 6과 4의 최소공배수를 구하면 다음과 같다. 1) 두 수의 곱 $ 6 \times 4 = 24 $ 2) 두 수의 최대공약수 $ gcd(6, 4) = 2 $ 3) 두 수의 최소공배수 $ \frac{24}..
프로그래머스 | 최빈값 구하기 [파이썬 Python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(array): count = [0] * (max(array)+1) # 숫자 출연 횟수를 셀 리스트 for i in array: count[i] += 1 m = 0 # 최빈값의 개수 for c in count: if c == max(count): m += 1 if m > 1: # 최빈값이 2개 이상이면 -1을 리턴 return -1 else: # 최빈값이 1개이면 해당 숫자를 리턴 return count.index(max(count)) 주어진 배열에서 최빈값을 찾는 문제이다. 최빈값..
프로그래머스 | 분수의 덧셈 [파이썬 Python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import math def solution(numer1, denom1, numer2, denom2): b = denom1 * denom2 a = (numer1 * denom2) + (numer2 * denom1) gcd=math.gcd(a,b) a = a // gcd b = b // gcd answer = [a, b] return answer $\frac{numer1}{denom1}$, $\frac{numer2}{denom2}$ 의 합을 기약분수로 나타내는 문제이다. 처음에는 denom1과 denom2..