본문 바로가기

코딩테스트 연습14

프로그래머스_다트게임_파이썬 def solution(dartResult): answer = [] dartResult = dartResult.replace('10','X') point = ['10' if i == 'X' else i for i in dartResult] # print(point) SDT = ["S","D","T"] for i in point: if i in SDT: answer[-1] = answer[-1]**(SDT.index(i)+1) elif i == "*": answer[-1] *= 2 if len(answer) > 1 : answer[-2] *= 2 elif i == "#": answer[-1] *= -1 else: answer.append(int(i)) print(answer) return sum(answe.. 2020. 12. 28.
비밀지도_파이썬 def solution(n, arr1, arr2): answer = [] map = [['#' for i in range(n)] for j in range(n)] temp1 = arr1 temp2 = arr2 for i in range(n): for j in range(n): if (temp1[i] % 2 == 0 ) and (temp2[i]%2==0): map[i][-1-j] = ' ' temp1[i] = temp1[i] // 2 temp2[i] = temp2[i] // 2 m = '' for j in range(n): m += map[i][j] answer.append(m) return answer 내가 푼 코드 이진법을 처리하는 함수를 몰라서 직접 해결. def solution(n, arr1, ar.. 2020. 12. 24.
x만큼 간격이 있는 n개의 숫자_파이썬 def solution(x, n): return [x*i for i in range(1,n+1)] 2020. 12. 24.
프로그래머스_행렬의덧셈_파이썬 def solution(arr1, arr2): for i in range(len(arr2)): for j in range(len(arr2[0])): arr1[i][j] += arr2[i][j] return arr1 처음에 풀었을때 위에처럼 풀었음. def solution(arr1, arr2): return [[arr1[i][j] + arr2[i][j] for j in range(len(arr2[0]))] for i in range(len(arr2))] 파이썬 답게 한줄로 요약? 했을때 def solution(arr1, arr2): return [[ v1+v2 for v1,v2 in zip(a1,a2)] for a1,a2 in zip(arr1,arr2)] 다른사람의 풀이에서 내장함수 zip을 이용한걸 보고.. 2020. 12. 23.
프로그래머스_핸드폰 번호 가리기_파이썬 def solution(phone_number): answer = [(phone_number[i]) for i in range(len(phone_number))] for i in range(0,len(phone_number)-4): answer[i] = "*" result='' for i in range(len(phone_number)): result += answer[i] return result 아주 비효율적인 코드.. 아래는 다른 사람의 풀이를 참고했을때 def solution(phone_number): return "*"*(len(phone_number)-4) + phone_number[-4:]​ 문자열을 좀더 이해할 필요가 있을듯 2020. 12. 23.
프로그래머스_하샤드수_파이썬 def solution(n): digit_sum = 0 temp=n while temp: digit_sum += temp%10 temp //= 10 print(temp) return n % digit_sum == 0 str을 이용해서 간단하게 풀수있지만 요런식으로도 풀수있다. 2020. 12. 22.