목록Programmers (6)
눈송이의 개발생활
문제 https://programmers.co.kr/learn/courses/30/lessons/42862 내 코드 def solution(n, lost, reserve): s_res = set(reserve) - set(lost) s_lost = set(lost) - set(reserve) for i in s_res: if i - 1 in s_lost: s_lost.remove(i - 1) elif i + 1 in s_lost: s_lost.remove(i + 1) return n - len(s_lost) 다른 사람 풀이 def solution(n, lost, reserve): _reserve = [r for r in reserve if r not in lost] _lost = [l for l in l..
문제 - 콜라츠 추측 https://programmers.co.kr/learn/courses/30/lessons/12943 내 코드 def solution(num): count = 0 while count 0: t = c % d c, d = d, t answer = [c, int(a*b/c)] return answer 해결 방법 나는 math 모듈에서 gcd()함수를 가져와서 사용했다.(최대공약수 찾아주는 함수) lcm()은 gcd()만 사용하면 금방 만들 수 있어서 쉽게 최소공배수까지 찾을 수 있었다. 다른 사람의 풀이를 보니 유클리드 호제법을 사용해서 풀었다고 하길래 공부해보았다! https://hihellosuah.tistory.com/74 [Algorithm]유클리드 호제법 - 두 수의 최대공약수..
문제 - 정수 제곱근 판별 https://programmers.co.kr/learn/courses/30/lessons/12934 내 코드 def solution(n): sqrt = n**(1/2) if sqrt.is_integer() : return (sqrt+1)**2 else: return -1 다른 사람 풀이 def solution(n): sqrt = n**(1/2) if sqrt % 1 == 0: return (sqrt+1)**2 else: return -1 해결 방법 n에 제곱근을 씌우고 정수로 떨어지는 숫자를 찾을 때 is_integer() 함수를 사용했었다. float type의 수가 정수(int)인지 아닌지 확인할 때 사용하는 함수라고 한다. return 값은 boolean! 다른 사람의 ..
문제 - 짝수와 홀수 https://programmers.co.kr/learn/courses/30/lessons/12937 내 코드 def solution(num): if num % 2 == 0: return "Even" else: return "Odd" 다른 사람 풀이 def solution(num): return num % 2 and "Odd" or "Even" 해결 방법 이 문제를 보면서 프로그래머스 레벨 1 문제들은 코드를 간결하게 쓰는 것을 연습하는 용도이라는 것을 알았다. 쉽게 풀 수 있었지만 다른 사람이 쓴 풀이를 보면 감탄이 나왔다. 어떻게 저렇게 심플하고 예쁘게 코드를 바로 짤 수 있는거지....😮 아래 풀이를 더 설명해보자면, 파이썬은 앞에서부터 논리 연산을 한다고 한다. 예를 들어 n..
문제 - 2016년 https://programmers.co.kr/learn/courses/30/lessons/12901 내 코드 day = ['FRI','SAT','SUN', 'MON','TUE','WED','THU'] end = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] def solution(a, b): answer = day[(sum(end[:a-1]) + b-1) % 7] return answer 다른 사람 풀이 import datetime def solution(a, b): date = 'MON TUE WED THU FRI SAT SUN'.split() return date[datetime.datetime(2016, a, b).weekday()] 해..
문제 - 행렬의 덧셈 https://programmers.co.kr/learn/courses/30/lessons/12950 내 코드 def solution(arr1, arr2): answer = [] for i in range(len(arr1)): answer.append([]) for j in range(len(arr1[0])): answer[i].append(arr1[i][j] + arr2[i][j]) return answer 다른 사람 풀이 def solution(arr1, arr2): answer = [[c + d for c, d in zip(a, b)] for a, b in zip(arr1, arr2)] return answer 해결 방법 나는 이중 for문으로 복잡하게 풀었는데 다른 사람의 풀..