<백준 문제풀이: 9461번> 파이썬 - 파도반 수열 이것도 간단한 문제였다. 피보나치 수열인데 조금만 다른 피보나치 수열이라 생각하면 된다. 런타임 에러가 뜬 풀이 import sys T = int(sys.stdin.readline()) a,b,c,d,e = 1, 1, 1, 2, 2 first_nums = [a,b,c,d,e] def new_series(n): if n 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 15. 15:35
<프로그래머스 문제풀이: 올바른 괄호> Level 2 - 파이썬 간단해 보이는 괄호 문제이다. 어디서 본 적이 있는 듯한 문제인데 기억이 안난다(백준에서 본 것 같기도 하고...) 시간 초과가 뜬 풀이 처음에는 while문으로 풀었는데 효율성 테스트 1,2번에서 계속 시간초과가 뜬다. def solution(s): while True: temp = s s = s.replace('()', '') if s == '': return True if temp == s: return False아마도 while문 때문에 그런듯 하다. 원래 이 코드의 취지는, s 문자열 안에 있는 ()를 빈 문자열로 대체해주고, 미리 정의 해놨던 temp 와 s 가 같으면 그 뜻은 while문안에서 더 이상 ()이 발견이 안된다는 뜻인데, 이 때 temp.. 알고리즘 테스트/프로그래머스 문제풀이 및 해설 2020. 12. 14. 16:51
<Hackerrank 문제풀이: 파이썬> Zipped! 파이썬의 내장함수인 zip() 함수를 이용하는 문제이다. import sys N, M = map(int, sys.stdin.readline().split()) scores = [] for i in range(M): scores += [(map(float, sys.stdin.readline().split()))] for j in zip(*scores): print("%.1f" %(sum(j)/len(j)))처음에 어떻게 하나의 리스트 안에 있는 각각의 리스트들을 zip으로 구현하나 싶었는데, 이는 문제 설명에 나와있었다. zip(*scores) 를 사용하면 됐다. 알고리즘 테스트/Hackerrank 문제풀이 및 해설 2020. 12. 14. 15:38
<백준 문제풀이: 15651번> 파이썬 - N과 M (3) 이번에는 저번 문제랑도 비슷한 것 같지만, 이번에는 모든 경우의 수를 출력하는 것이 목표인 문제였다. import sys N, M = map(int, sys.stdin.readline().split()) check_list = [False]*N output = [] def solve(depth, N, M): if depth == M: print(' '.join([str(x) for x in output])) return for i in range(N): output.append(i+1) solve(depth+1, N, M) output.pop() solve(0, N, M)모든 경우의 수를 출력하는 것은 생각외로 쉽다. check_list[i]=True 인것을 만들어주지 않으면 된다. 이렇게.. 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 14. 00:39
<Hackerrank 문제풀이: 파이썬> Re.split() 간단한 문제였는데, re.compile 과는 매우 다른 방식이어서 조금 애먹었다. regex_pattern = r"[.,]+" import re print("\n".join(re.split(regex_pattern, input()))) 여기서 re.split()은 어떤 패턴으로 스플릿 시킬것인지를 기준으로 패턴을 만들어야 한다. 따라서 r".,"+를 사용해야 한다. 알고리즘 테스트/Hackerrank 문제풀이 및 해설 2020. 12. 13. 13:26
<프로그래머스 문제풀이: [해시] 전화번호 목록> Level 2 - 파이썬 해시를 이용하여 푸는 문제라고 되어있는데, 해시가 무엇인지 아직 정확히 모르므로, 내가 생각한 방식으로 풀었다. def solution(phone_book): for i in range(len(phone_book)): for j in range(len(phone_book)): if i!= j: if phone_book[i]+phone_book[j][len(phone_book[i]):] == phone_book[j]: return False break else: return True효율성도 나쁘지 않고, 정확성도 다 맞는 풀이 방법이라 다른 사람의 풀이를 한번 보기로 했다. 다른 사람의 풀이 프로그래머스에서 가장 많은 좋아요를 받은 문제풀이이다 def solution(phoneBook): phoneBook.. 알고리즘 테스트/프로그래머스 문제풀이 및 해설 2020. 12. 13. 13:01