본문 바로가기

알고리즘

(94)
파이썬 | 프로그래머스 | 스킬트리 | for-else문 def solution(skill, skill_trees): answer = 0 for s in skill_trees: tmp = [] for i in range(len(s)): if s[i] in skill: tmp.append(s[i]) for i in range(len(tmp)): if tmp[i] != skill[i]: break else: answer += 1 return answer 문제 출처 programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr
파이썬 | 백준 | 14499 | 주사위 굴리기 solution # 14499, 주사위 굴리기 import sys # 1:동 2:서 3:북 4:남 N, M, x, y, K = map(int, sys.stdin.readline().split()) coor = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] dir = list(map(int, sys.stdin.readline().split())) dice = [0] * 7 for i in range(K): # 동 if dir[i] == 1: if y + 1 < M: dice[4], dice[1], dice[3], dice[6] = dice[6], dice[4], dice[1], dice[3] if coor[x][y + 1] == 0: c..
C++ | 백준 | 1325 | 효율적인 해킹 solution 단방향 그래프 #include "stdafx.h" #include #include #include using namespace std; int N, M; vector G[10001]; int visited[10001] = { 0, }; int cnt; void dfs(int node) { //방문 visited[node] = 1; cnt += 1; for (int i = 0; i > N >> M; while (M--) { int c1, c2; cin >> c1 >> c2; G[c2].push_back(c1); } i..
파이썬 | c++ | 백준 | 4963 | 섬의 개수 | del list # 4963, 섬의 개수 import sys sys.setrecursionlimit(10000) dx = [-1, -1, -1, 0, 0, 1, 1, 1] dy = [1, 0, -1, 1, -1, 1, 0, -1] def dfs(x, y): visited[x][y] = 1 for i in range(8): nx = x + dx[i] ny = y + dy[i] if 0 = w) continue; else { if (map[nx][ny] == 1 && visited[nx][ny] == 0) dfs(nx, ny); } } } int main() { //int w, h; while (true) { cin >> w >> h; if (w == 0 && h == 0) { break; } for (int i = 0; ..
파이썬 | 백준 | 1743 | 음식물 피하기 solution # 1743, 음식물 피하기 import sys sys.setrecursionlimit(10000) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dfs(x, y): visited[x][y] = 1 global cnt cnt += 1 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 1
파이썬 | 백준 | 2458 | 키 순서 solution 1. dfs 2번 이용 # 2458, 키 순서 import sys sys.setrecursionlimit(10000) def dfs1(x): visited[x] = 1 global tall for i in height_1[x]: if not visited[i]: tall += 1 dfs1(i) return tall def dfs2(x): visited[x] = 1 global short for i in height_2[x]: if not visited[i]: short += 1 dfs2(i) return short n, m = map(int, sys.stdin.readline().split()) height_1 = [[] for _ in range(n + 1)] height_2 = [[]..
파이썬 | 백준 | 6593 | 상범 빌딩 solution 1. bfs이용 (6방향 → 3차원 배열) # 6593, 상범빌딩 import sys from collections import deque dx = [-1, 1, 0, 0, 0, 0] dy = [0, 0, -1, 1, 0, 0] dz = [0, 0, 0, 0, -1, 1] def bfs(z, x, y): visited[z][x][y] = 1 q = deque() q.append((z, x, y)) while q: c, a, b = q.popleft() for i in range(6): nz = c + dz[i] nx = a + dx[i] ny = b + dy[i] if 0
파이썬 | 백준 | 1715 | 카드 정렬하기 solution 1. 카드 묶음 배열 정렬 # 1715, 카드 정렬하기 import sys n = int(sys.stdin.readline()) ns = [] for _ in range(n): ns.append(int(sys.stdin.readline())) ns.sort() temp = 0 for i in range(len(ns)-1): temp += ns[i] + ns[i+1] ns[i+1] = temp print(temp) 메모리 초과 2. 힙 이용 # 1715, 카드 정렬하기 import sys import heapq n = int(sys.stdin.readline()) ns = [] for _ in range(n): heapq.heappush(ns, int(sys.stdin.readline())..