[백준/Python] 2748번 - 피보나치 수 2
·
Algorithm/BaekJoon
import sys input = sys.stdin.readline n = int(input()) dp = [0] * (n+2) dp[0], dp[1], dp[2] = 0, 1, 1 for i in range(2, n+1): dp[i] = dp[i-1] + dp[i-2] print(dp[n]) 간단한 피보나치 문제!
[프로그래머스/Python] 구명보트
·
Algorithm/Programmers
def solution(people, limit): boat = [] people.sort() light = people[0] idx = 0 for i in range(len(people)-1, -1, -1): if idx > i: break person = people[i] if person + light > limit: # 가장 가벼운 사람이랑도 못앉으면 혼자 가야지 boat.append(person) continue # 가장 가벼운 사람이랑은 같이 앉아갈 수 있다! 그럼 앉아가슈 if idx < i: boat.append(person + light) idx += 1 light = people[idx] continue # 앉아갈 짝이 없으면 혼자 가렴 boat.append(person) return ..
[프로그래머스/Python] 베스트앨범
·
Algorithm/Programmers
dictionary 하나로 풀어보려고 했는데 도저히 각이 안나와서 그냥 dictionary 2개를 썼다 그래서 풀이가 좀 더럽긴하지만,, 일단 맞았으니 올려본다 def solution(genres, plays): album_by_genre = {} # genre, (play, index) plays_by_genre = {} # (genre, plays) for i, play in enumerate(plays): g = genres[i] if g in plays_by_genre: plays_by_genre[g] += play album_by_genre[g].append((play, i)) else: plays_by_genre[g] = play album_by_genre[g] = [(play, i)] for..
[프로그래머스/Python] 의상
·
Algorithm/Programmers
백준 '9375번, 패션왕 신해빈' 문제와 완전 똑같기 때문에 풀이도 똑같다. 해당 문제 풀이는 여기 참고! def solution(clothes): closet = {} for cloth, type in clothes: if type not in closet: closet[type] = 1 closet[type] += 1 answer = 1 for k, v in closet.items(): answer *= v return answer - 1
[프로그래머스/Python] 전화번호 목록
·
Algorithm/Programmers
처음 풀었던 방법인데 효율성 테스트 3,4 에서 시간초과가 뜬 코드다 def solution(phone_book): p = [] answer = True for num in sorted(phone_book, key = lambda x: len(x)): for prefix in p: if num[:len(prefix)] == prefix: answer = False else: p.append(num) if not answer: break return answer startswith 도 써보고, 길이로 정렬이 아닌 그냥 문자열 정렬을 해주기도 했지만 계속 시간 초과가 나서 풀이 과정에 뭔가 생각의 전환이 필요함을 느꼈다!! 참고로 문자열 숫자 정렬은 숫자 크기가 아닌, 앞의 글자 숫자 크기로 정렬을 한다(내..
[백준/Python] 1600번 - 말이 되고픈 원숭이
·
Algorithm/BaekJoon
import sys from collections import deque input = sys.stdin.readline # 상하좌우, 체스 나이트 이동 monkey = [[1,0],[0,1],[-1,0],[0,-1]] horse = [[-2,-1], [-2,1],[-1,-2],[-1,2],[2,-1],[2,1],[1,-2],[1,2]] K = int(input()) # 체스 나이트처럼 움직일 수 있는 횟수 W, H = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(H)] ## 특정 이동 방식에 횟수가 정해져 있을 때 3차원 배열 활용! ## 즉, 방문 처리 배열을 3차원으로 나타냄: visited[열][..