본문 바로가기
반응형

파이썬9

[LeetCode] 1154. Day of the Year (파이썬) 문제 링크 코딩하기 전 생각하기 ''' split를 사용하여 년, 월, 일 변수를 저장하자. 월의 일 수가 담긴 배열을 생성한다. 윤년이면 2월은 29일까지 있다. month-1 까지의 월의 일 수를 모두 더하고 day를 더해서 몇번째 날인지 구한다. ''' 코드 class Solution: def dayOfYear(self, date: str) -> int: year, month, day = date.split("-") year = int(year) month = int(month) day = int(day) month_days = [31,28,31,30,31,30,31,31,30,31,30,31] if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:.. 2021. 7. 29.
[백준/BOJ] 4150번 - 피보나치 수 (파이썬) 문제 링크 코딩하기 전 생각하기 ''' 메모이제이션을 활용하는 피보나치 재귀함수를 선언하자. ''' 코드 import sys sys.setrecursionlimit(10**6) memo = {} def fib(n): if n == 1: return 1 if n == 2: return 1 if n in memo: return memo[n] memo[n] = fib(n - 1) + fib(n - 2) return memo[n] n = int(input()) print(fib(n)) 느낀점 이 문제를 통해서 메모이제이션이라는 개념에 대해서 알 수 있었다. 이 방식의 시간복잡도는 O(N)이다. 다음 링크를 참고하였다. https://www.acmicpc.net/blog/view/28 피보나치 수를 구하는 여러가.. 2021. 7. 24.
[LeetCode] 66. Plus One (파이썬) 문제 링크 코딩하기 전 생각하기 ''' answer 배열을 생성한다. digits 배열을 숫자로 변환하자. 숫자에 1을 더한다. 숫자를 문자열로 변환하고 문자열을 순회하여 answer 배열을 채운다. ''' 코드 class Solution: def plusOne(self, digits: List[int]) -> List[int]: answer = [] num = 0 for n in digits: num = num * 10 + n num += 1 for c in str(num): answer.append(c) return answer 느낀점 c++로 먼저 하다가 오버플로우가 발생해서 파이썬으로 해결하였다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환.. 2021. 7. 24.
[백준/BOJ] 11656번 - 접미사 배열 (파이썬) 문제 링크 코딩하기 전 생각하기 ''' 접미사 배열을 만들자. [1:len(s)]와 같은 인덱스기능을 사용해서 앞 글자를 제거해 나가며 접미사 배열을 채운다. 접미사 배열을 sort하고 출력한다. ''' 코드 li = [] s = input() n = len(s) for i in range(n): li.append(s) s = s[1:len(s)] for i in sorted(li): print(i) 느낀점 li.append(s[i:]) 이렇게 하면 더 간단하다. 새로운 것을 또 알아간다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 7. 16.
[백준/BOJ] 10867번 - 중복 빼고 정렬하기 (파이썬) 문제 링크 코딩하기 전 생각하기 ''' 중복을 허용하지 않는 파이썬의 set을 사용하자. sort하고 출력하자. ''' 코드 n = int(input()) li = map(int, input().split()) li = sorted(list(set(li))) for i in li: print(i, end = " ") 느낀점 n을 입력받을 필요도 없다. 파이썬과 set이 다했다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 7. 13.
[백준/BOJ] 10757번 - 큰 수 A+B (파이썬) 문제 링크 코딩하기 전 생각하기 ''' C++에서는 long long을 사용하여도 오버플로우가 발생한다. 파이썬으로 해보자 ''' 코드 a, b = map(int, input().split()) print(a + b) 느낀점 숫자가 너무 커서 long long을 사용해도 오버플로우가 발생한다. 구글링을 해보니 배열이나 문자열을 이용해야한다고 한다. 파이썬 최고다.. 그렇지만 파이썬으로 해결하면 의미없는 문제다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 7. 11.
[백준/BOJ] 1316번 - 그룹 단어 체커 (파이썬) 문제 링크 코딩하기 전 생각하기 ''' 등장한 적이 있는 알파벳을 리스트에 담을 것이다. 문자열을 입력받고 순회한다. 연속되지 않은 알파벳이 나왔을 때, 알파벳 리스트에 해당 문자가 있으면 break 한다. 없으면 알파벳을 리스트에 담는다. 문자열을 모두 순회했으면 count에 1을 더한다. count를 출력한다. ''' 코드 n = int(input()) count = 0 for i in range(n): k = 1 s = input() li = s[0] for j in range(1, len(s)): if j > 0 and s[j-1] != s[j]: if s[j] in li: k = 0 break else: li += s[j] if k == 1: count += 1 print(count) 느낀점 비.. 2021. 7. 7.
[백준/BOJ] 4659번 - 비밀번호 발음하기 (파이썬) 문제 링크 코딩하기 전 생각하기 ''' end를 입력 받을 때 까지 반복한다. 문자열에 모음이 있는지 판별한다. 연속되는 자음과 모음을 판별한다. 'e'나 'o'가 아닐 때 같은 문자가 연속으로 오는지 판별한다. 조건에 따라 acceptable인지 아닌지를 출력한다. ''' 코드 vows = "aeiou" while True: s = input() if s == "end": break v = 0 k = 1 for i in range(len(s)): if s[i] in vows: v = 1 if i > 0: if s[i] == s[i-1] and s[i] != 'e' and s[i] != 'o': k = 0 break if i > 1: if s[i] not in vows: if s[i-1] not in v.. 2021. 7. 6.
[프로그래머스] 스킬트리 (파이썬) 문제 링크 코딩하기 전 생각하기 ''' skill tree에서 skill에 없는 문자는 다 제거한다. skill tree과 skill의 길이만큼 skill의 문자열을 자른 것과 비교한다. 둘이 같으면 count에 1을 더한다. count를 출력한다. ''' 코드 def solution(skill, skill_trees): count = 0 for skill_tree in skill_trees: str = "" for i in skill_tree: if i in skill: str += i if str == skill[0: len(str)]: count += 1 return count 느낀점 복잡하게 생각했다가 밥먹으면서 풀이를 떠올렸다. skill에 없는 문자는 다 제거해 버리고 비교하면 답이 나올거 같.. 2021. 7. 5.
반응형