본문 바로가기

프로그래머스28

[개발일기] ⭐ 프로그래머스 100위 입성! ⭐ 드디어 프로그래머스 점수 순위 100위 안으로 입성했다! 사실 점수는 그냥 쌓이고 쌓이는 거라서 실력과는 무관하지만.... 많은 문제들을 접해봤고, 꾸준하게 해왔다는 것을 기념하며!! - 07.26 오전 3시 - 나는 UI, UX 에 영향을 많이 미치는 타입이라 백준보다 디자인이 이쁘게 잘 돼있는 프로그래머스로 더 많이 시작했던 것 같다. 문제 읽을 때도 뭔가 더 잘 읽히는 느낌? 이제는 백준, 프로그래머스, 알고스팟, 삼성SW 이렇게 들락날락하는데 솔직히 여전히 뭔가 프로그래머스 문제 풀 때가 더 재밌는 느낌이다. 지금까지는 이 단원 저 단원 안가리고 잡히는대로 문제를 풀어왔다면, 이번 기회로 부족하다고 느끼는 단원을 정리해보고, 그 부분에 대해서 더 집중적으로 공부해야겠다. @ 부족한 단원 @ - 트.. 2020. 7. 26.
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 줄 서는 방법 / Python 문제풀이 해답) import copy def factorial(n): if n == 1: return 1 return n * factorial(n-1) def solution(num, k): if num == 1: return [num] remain_nums = [i for i in range(1, num+1)] cands = [factorial(i) for i in range(num-1, 0, -1)] # 팩토리얼 큰 것 부터 모음 pre_nums = [] # 각 자리를 결정해주는 수 ''' 만약 pre_nums = [1,1,1] 이면 정답 = [2,3,4] ''' k_copy = k # 2번째 방법 때 k 써야돼서 for i in range(num-1): pre_nums.append(((k_copy-1) //.. 2020. 7. 17.
[프로그래머스💯] 코딩테스트 연습 > 등굣길 해답) def solution(m, n, puddles): path = [[0 for _ in range(m)] for _ in range(n)] path[0][0] = 1 for y in range(n): for x in range(m): if [x+1, y+1] in puddles: print("x,y = > ", x, y) continue if x != m-1: path[y][x+1] += path[y][x] if y != n-1: path[y+1][x] += path[y][x] print(path) return path solution(4, 3, [[2, 2]]) 풀이) 이 문제는 동적 계획법의 대표적이면서도 간단한 문제입니다! 동적 계획법 문제의 기본은 중간점까지의 최적해를 계속해서 저장한 뒤 .. 2020. 7. 9.
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 시저 암호 🔒 해답) def solution(s, n): def convert(char): if char == " ": return " " elif ord(char) 2020. 6. 8.
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 가장 긴 팰린드롬 해답) def solution(string): end = len(string)-1 def find(i, i2 = -1): res = 2 # 가운데가 2개로 볼때 if i2 == -1: # 가운데 1개 기준으로볼때 i2 = i res = 1 j = 1 # 커지는 수 while i2 + j = 0: if string[i2+j] == string[i-j]: res += 2 else: return res j += 1 return res answer = 1 for i in range(1, len(string)-1): if string[i] == string[i+1]: # 2개짜리 검사 answer = max(answer, find(i), find(i, i+1)) else: answer = max(answer, f.. 2020. 5. 16.
[프로그래머스💯] 코딩테스트 연습 > 동적 계획법 > 정수 삼각형 / Python 문제풀이 해답) def solution(triangle): answer = 0 length = len(triangle) # length+1 한 이유 : 맨밑줄 index 넘어가도 오류안나게 maxPath = [[0 for _ in range(length+1)] for _ in range(length+1)] maxPath[0][0] = triangle[0][0] for i in range(length-1): for j in range(i+1): # 왼쪽 밑 보고 갱신 if maxPath[i][j] + triangle[i+1][j] > maxPath[i+1][j]: maxPath[i+1][j] = maxPath[i][j] + triangle[i+1][j] # 오른쪽 밑 보고 갱신 if maxPath[i][j] + t.. 2020. 5. 10.