Algorithm/Programmers 29

[프로그래머스]_Level 1_최대공약수와 최소공배수_파이썬

2021.09.04 def solution(n, m): def gcd(a, b): return gcd(b, a % b) if b > 0 else a return [gcd(n, m), n * m // gcd(n, m)] Project Euler의 5번 문제와 거의 동일한 문제여서 어떻게 코드를 줄일 수 있을지에 대해 생각했다. 우선 최대공약수를 구하는 함수는 유클리드 호제법을 재귀함수로 작성하였다. 호제법이란 두 수가 서로의 수를 나누어 결국 원하는 수를 얻는 알고리즘을 나타낸다. 유클리드 호제법이란 2개의 자연수 A, B에 대해서 A > B의 경우, A를 B로 나눈 나머지를 R이라 하면 A와 B의 최대 공약수는 B와 R의 최대공약수와 같다. 이 성질에 따라 B를 R로 나눈 나머지 R'을 구하고, 다시 R..

[프로그래머스]_Level 1_콜라츠 추측_파이썬

2021.09.03 def solution(num): answer = 0 while num != 1: if num % 2 == 0: num = num / 2 else: num = num * 3 + 1 answer += 1 if answer >= 500: answer = -1 break return answer 정확성 : 93.8 def solution(num): answer = 0 while True: if num % 2 == 0: num = num / 2 answer += 1 else: num = num * 3 + 1 answer += 1 if num == 1: if answer >= 500: answer = -1 return answer return answer 1이 아닐 경우 while문을 통해 입..

[프로그래머스]_Level 1_행렬의 덧셈_파이썬

2021.09.03 def solution(arr1, arr2): for i in range(len(arr1)): for j in range(len(arr1[i])): arr1[i][j] += arr2[i][j] return arr1 2개 중 0개 성공, TypeError : Object of type ndarray is not JSON serializable import numpy as np def solution(arr1, arr2): a = np.array(arr1, np.float) b = np.array(arr1, np.float) return a + b numpy 사용하면 쉬울 것 같았는데 TypeError..... 아래와 같이 행렬 arr1과 arr2는 중첩리스트로 구성되어 있다. arr1 ..

[프로그래머스]_Level 1_x만큼 간격이 있는 n개의 숫자_파이썬

2021.09.03 def solution(x, n): answer = [] for i in range(int(n)): answer.append((i+1) * int(x)) return answer NameError def sol(x, n): a = [a.append((i+1) * int(x)) for i in range(int(n))] return a 리스트를 만들어서 출력하고 싶었는데 list 본인은 list에 넣을 수 없었다. 본인을 넣을 수 없으면 그냥 바로 return 하면 되는걸...... def sol(x, n): return [(i+1) * int(x) for i in range(int(n))]

[프로그래머스]_Level 1_직사각형 별찍기_파이썬

2021.09.03 a, b = map(int, input().strip().split(' ')) print(('*'*a + '\n')* b) 2개 중 1개 성공, 실행한 결과값 ***이(가) 기댓값 *****와(과) 다릅니다. a, b = map(int, input().split()) for i in range(a): print('*'*b) a와 b를 거꾸로 생각했는데도 50%의 정답률이 나온건 정말......ㅎ....... map() map(f, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다. input() 사용자 입력함수, 입력되는 모든 것을 문자열로 취급한다. 문자열 ..

[프로그래머스]_Level 1_완주하지 못한 선수_파이썬

2021.09.03 def solution(participant, completion): participant.sort() completion.sort() for i in range(len(completion)): if participant[i] != completion[i]: return participant[i] return participant[i+1] 문제에서 완주하지 못한 선수는 참여한 선수 중 한 명이고, 참가자 중 동명이인이 있을 수 있다는 조건이 주어졌다. 마라톤을 참여한 선수의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어졌을 때, sort()를 이용해 정렬하면 아래와 같은 결과가 나온다. participant = ["mislav",..