공부/코딩테스트 51

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 실패율

나의 답 : import operator def solution(N, stages): answer = [] result={} stages.sort() for i in range(1,N+1): if i in stages: result[i] = stages.count(i)/len(stages) while i in stages: stages.remove(i) else: result[i] = 0 result = sorted(result.items() ,reverse=True, key=operator.itemgetter(1)) print(result) for i in result: answer.append(i[0]) return answer 다른 사람의 답 : def solution(N, stages): resu..

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 비밀지도

나의 답 : def solution(n, arr1, arr2): answer = [] s='' for i in range(n): arr1[i]=format(arr1[i],'b') arr2[i]=format(arr2[i],'b') arr1[i]='0'*(n-len(arr1[i]))+arr1[i] arr2[i]='0'*(n-len(arr2[i]))+arr2[i] for j in range(n): if int(arr1[i][j]) or int(arr2[i][j]): s+='#' else: s+=' ' answer.append(s) s='' return answer 다른 사람의 답 : def solution(n, arr1, arr2): answer = [] for i,j in zip(arr1, arr2): a ..

[프로그래머스] 행렬의 덧셈, x만큼 간격이 있는 n개의 숫자

나의 답 : def solution(arr1, arr2): l=[] answer = [] for i in range(len(arr1)): for j in range(len(arr1[0])): l.append(arr1[i][j]+arr2[i][j]) answer.append(l) l=[] return answer 다른 사람의 답 : def sumMatrix(A,B): answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)] return answer 나의 답 : def solution(x, n): answer = [] a=x for i in range(n): answer.append(a) a+=x return answer 다른 사람의 답은 음수일 때를 고..

[프로그래머스] 최대공약수와 최소공배수, 콜라츠 추측, 핸드폰 번호 가리기

나의 답(유클리드 호제법) : def solution(n, m): answer = [] r=0 nn=0 nm=0 if n 0: t = c % d c, d = d, t answer = [c, int(a*b/c)] return answer 나의 답 : def solution(num): count = 0 if num==1: return 0 while True: count += 1 if count>500: return -1 if num%2==0: num/=2 else: num = (num*3)+1 if num == 1: return count 나의 답 : def solution(phone_number): a=phone_number[-4:] b=len(phone_number)-4 return ("*"*b)+a

[프로그래머스] 2020카카오 인턴십-키패드 누르기

나의 답 : def solution(numbers, hand): result=[] l=10 r=12 dl=0 dr=0 for i in numbers: if i == 0 : i = 11 if i in [1,4,7]: result.append('L') l=i elif i in [3,6,9]: result.append('R') r=i else: if abs(i-l) in [0]: dl=0 if abs(i-l) in [1,3]: dl=1 if abs(i-l) in [2,4,6]: dl=2 if abs(i-l) in [5,7,9]: dl=3 if abs(i-l) in [8,10]: dl=4 if abs(i-r) in [0]: dr=0 if abs(i-r) in [1,3]: dr=1 if abs(i-r) in [2..

[프로그래머스] 제일 작은 수 제거하기, 정수 제곱근 판별

나의 답 : def solution(arr): if len(arr)==1: return [-1] else: arr.remove(min(arr)) return arr 다른 사람의 답 : def rm_small(mylist): if len(mylist)>1: return [i for i in mylist if i > min(mylist)] else: return [-1] 나의 답 : import math def solution(n): l=math.sqrt(n) if l%2==0 or l%2==1: answer=math.pow(l+1,2) else: answer=-1 return answer 다른 사람의 답 : 1로 나눠서 판별함. def nextSqure(n): sqrt = n ** (1/2) if sqrt..

[프로그래머스] 자연수 뒤집어 배열로 만들기, 정수 내림차순으로 배치하기

나의 답 : def solution(n): n = str(n) l=len(n) answer = [] for i in range(l): answer.append(int(n[l-i-1])) return answer 다른 사람의 답 : def digit_reverse(n): return list(map(int, reversed(str(n)))) 나의 답 : def solution(n): n=sorted(str(n)) n.reverse() n=''.join(n) return int(n) 다른 사람의 답(병합정렬) : def merge(left, right): result = [] while len(left) > 0 or len(right) > 0: if len(left) > 0 and len(right) > 0..

[프로그래머스] 자릿수 더하기, 이상한 문자 만들기

나의 답 : def solution(n): answer=0 n=str(n) for i in n: answer+=int(i) return answer 다른 사람의 답: def sum_digit(number): return sum([int(i) for i in str(number)]) 나의 답 : def solution(s): l=s.split(' ') n=[] a=[] for i in l: for j in range(len(i)): if j%2==0: n.append(i[j].upper()) else: n.append(i[j].lower()) a.append(''.join(n)) n=[] l=' '.join(a) return l 다른 사람의 풀이 : def toWeirdCase(s): return " "...