분류 전체보기 144

[프로그래머스 / 파이썬 풀이] 네트워크

def solution(n, computers): global arr answer = 0 arr = [[] for _ in range(n)] visited = [0] * n for i in range(n): for j in range(n): if computers[i][j] != 0 and i != j: arr[i].append(j) def dfs(a): global arr for i in arr[a]: if visited[i] == 0: visited[i] = 1 dfs(i) for q in range(n): if visited[q] == 0: dfs(q) answer += 1 return answer 그래프를 활용한 dfs풀이. 우선 양방향 그래프와 컴퓨터 개수에 맞춰 방문 배열을 만들어 준 후 df..

Programmers 2023.01.09

[Flutter] API 요청하기

노마드코더님의 플러터 강의를 수강 하면서 플러터 API요청은 어떤 방식으로 이루어 지는지 알아보려고 한다. lib 폴더 구조 ├─lib ├─models │└─webtoon_model.dart ├─screens │└─home_screen.dart └─services └─api_service.dart api 요청 // api_service.dart // pub.dev에서 http를 설치 import 'package:http/http.dart' as http; class ApiService { // baseUrl과, 오늘의 웹툰을 받아올 수 있는 주소를 final로 담아준다 final String baseUrl = ''; final String today = 'today'; // JS와 같이 async, aw..

Flutter 2023.01.06

[프로그래머스 / 파이썬 풀이] 모음사전

풀이 1 from itertools import product def solution(word): answer = 0 words = ['A', 'E', 'I', 'O', 'U'] ans_lst = [] for i in range(1, len(words) + 1): for j in product(words, repeat = i): ans_lst.append(''.join(list(j))) ans_lst.sort() answer = ans_lst.index(word) + 1 return answer itertools 모듈의 product 함수(중복순열)를 사용. 해당 된 모음들의 모든 순열을 구한 뒤 정렬하여 인덱스를 통해 위치를 찾아준다. 풀이 2 def solution(word): global answe..

Programmers 2023.01.06

[프로그래머스 / 파이썬 풀이] 피로도

from itertools import permutations def solution(k, dungeons): answer = -1 per_dg = permutations(dungeons, len(dungeons)) for i in per_dg: piro = k cnt = 0 for j in i: if piro >= j[0] and piro-j[1] >= 0: piro -= j[1] cnt += 1 else: break if answer < cnt: answer = cnt return answer 각 던전들의 모든 경우의 수를 생각한 순열 배열을 만든 후, 모든 경우 중 최대 던전을 돈 횟수를 출력한다. (처음에 permutations(dungeons, len(dungeons) 에서 len(dungeon..

Programmers 2023.01.05

[프로그래머스 / 파이썬 풀이] 카펫

def solution(brown, yellow): answer = [] garo = brown // 2 + 1 for i in range(garo, 0, -1): for j in range(1, garo+1): if (i * 2) + ((j - 2) * 2) == brown and j - 2 > 0: if (i-2) * (j-2) == yellow: answer.append(i) answer.append(j) return answer return answer 갈색의 테두리는 무조건 1줄 임을 감안하여 풀이해야 한다. 갈색의 테두리가 제공 된 갈색의 개수만큼이고, 그 범위는 무조건 두줄 이상이기 때문에 절반으로 나눠 시간을 단축시킨다. 갈색테두리의 가로를 i 세로를 j 로 두고 세로는 0보다 커야 하므로..

Programmers 2023.01.05

[Programmers / Python 풀이] 위장

def solution(clothes): answer = 1 dic = {} for i in clothes: for j in range(len(i)//2): if i[1] in dic: dic[i[1]] += 1 else: dic[i[1]] = 1 for j in dic.values(): answer = (j+1) * answer answer -= 1 return answer 해시를 통해 딕셔너리에 각 옷 종류 별 개수를 담고 경우의 수를 통해 풀이. (옷 종류1 + 1)*(옷 종류2 + 1)*(옷 종류3 + 1) - 1 위와 같은 식을 사용하게 되는데 괄호항 안에 +1을 하는 경우는 해당 종류의 옷을 안입는 경우가 있으니 +1을 해주게 되고 최종적으로 곱한 값에 -1을 하는 이유는 옷을 모두 안입는 경..

카테고리 없음 2023.01.04

[Programmers / Python 풀이] 전화번호 목록

def solution(phone_book): answer = True dic = {} for i in phone_book: dic[i] = 0 for j in phone_book: search = '' for k in j: search += k if search in dic and search != j: answer = False return answer return answer 해시를 이용한 풀이. (처음에 접근을 잘못해서 도움을 받고 풀었다.) 폰번호를 딕셔너리에 키값으로 저장하고 순회를 통해 앞 문자열부터 하나씩 붙여가면서 그 붙인 문자열이 만약 접두어 이고, 그 접두어 자체의 번호가 아니라면 접두어가 포함 된 다른번호이므로 false

Programmers 2023.01.04
LIST