본문 바로가기

문제풀이66

[AlgoSpot] 알고스팟 > TILING2🖼 > Python 문제풀이! 해답) tile = [-1 for _ in range(101)] def TILING2(n): if tile[n] != -1: return tile[n] if n < 0: return False if n == 1: return 1 if n == 2: return 2 tile[n] = TILING2(n-1) + TILING2(n-2) return TILING2(n-1) + TILING2(n-2) testcaseNum = int(input()) for _ in range(testcaseNum): answer = TILING2(int(input())) % 1000000007 print(answer) 풀이) 길이가 1일때 만들 수 있는 타일의 개수 : 1개 길이가 2일때 만들 수 있는 타일의 개수 : 2개 길이가.. 2020. 2. 22.
[AlgoSpot] 알고스팟 > WILDCARD(와일드카드) - Python 문제풀이 👀 해답) import sys def readline(): return sys.stdin.readline() def solution(w_str, i_strs): answer = [] for i_str in i_strs: if isMatched(w_str, i_str): answer.append(i_str) for answerStr in sorted(answer): print(answerStr) return 0 def isMatched(w_str, i_str): if len(i_str) == 0 and len(w_str) == 0: return True if len(w_str) == 0: return False if w_str[0] == '*': if len(i_str) == 0: return isMatche.. 2020. 2. 17.
[프로그래머스💯][JS] 코딩테스트 연습 > 탐욕법(Greedy) > 섬 연결하기 해답) const makeDisjointSet = (islandList, n) => { for (let i = 0; i { if (island.pi === island.me) return island else { return findSet(islandList, islandList[island.pi]) } } const link = (island1, island2) => { if (island1.rank > island2.rank) island2.pi = island1.me else island1.pi = island2.me if .. 2020. 2. 9.
[프로그래머스💯] 코딩테스트 연습 > 힙(HEAP) > 이중우선순위큐 해답) def solution(operations): q = [] for i in operations: if i[0] == "I": q.append(int(i[2:])) elif i == "D 1" and len(q)!=0: q.pop(q.index(max(q))) elif i == "D -1" and len(q)!=0: q.pop(q.index(min(q))) if len(q) == 0 : return [0,0] return [max(q), min(q)] 풀이) 그냥 문제 말 그대로 조건문만 걸고 풀었습니다. 이중순위 뭐시기로 머리쓰기 귀찮아서 혹시나 하고 해봤는데 바로 되더라구요... 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 2020. 1. 26.
[프로그래머스💯] 코딩테스트 연습 > 완전탐색 > 카펫 해답) def solution(brown, red): answer = [] wid_hei_sum = int(brown/2 + 2) for height in range(1,wid_hei_sum): width = wid_hei_sum-height redsum = (width-2)*(height-2) if redsum == red : answer.append(width) answer.append(height) break return answer red는 안에 직사각형이고 brown 은 직사각형을 감싸는 테두리입니다. 수학적으로 생각해본다면 테두리 가로세로에서 각각 -2 를 한 길이가 직사각형의 가로세로 입니다. 세로의 길이를 1부터 높여가며 완전탐색을 돌면서 red 타일 개수가 일치하는지를 찾습니다. 출처: .. 2020. 1. 25.
[프로그래머스💯] 코딩테스트 연습 > 깊이/너비 우선 탐색(DFS/BFS) > 네트워크 > 다른 사람의 풀이 해답) def solution(n, computers): check = [1] * n network = 0 def find(Coms, Com, Com_index): check[Com_index] = 0 for objCom_i,obj_com in enumerate(Com): if obj_com: if check[objCom_i]: find(Coms, Coms[objCom_i], objCom_i) for index, com in enumerate(computers): if check[index]: find(computers, com,index) network += 1 return network 풀이) * check = 컴퓨터가 네트워크에 포함되었는지 여부를 반환합니다. (1: 아직안됨 0: 연결됨) 1. 한.. 2020. 1. 16.