[Programmers] Level 2. 괄호 변환
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking '균형잡힌 괄호 문자열' p가 주어질 때, '올바른 괄호 문자열'로 변환한 결과를 반환한다. '균형잡힌 괄호 문자열'은 '('와 ')'의 개수가 같은 문자열이다. '올바른 괄호 문자열'은 '균형잡힌 괄호 문자열'이면서 '('와 ')' 짝이 모두 맞는 문자열이다. 💻Solution def bracket_check(s): cnt = 0 for char in s: if cnt < 0: return False cnt += 1 if char == '(' else -1 if ..
[Programmers] Level 3. 자물쇠와 열쇠
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking key와 lock이 주어질 때, key를 상하좌우, 회전하여 lock의 홈에 끼워넣을 수 있는지를 반환한다. 💻Solution def right_rotate_90_degree(key): new_key = [] for i in zip(*key): new_key.append(list(reversed(i))) return new_key def check(new_lock): n = len(new_lock) // 3 for i in range(n, n*2): for j in..
[Baekjoon] 4485. 녹색 옷 입은 애가 젤다지?
·
코딩테스트/Python
🔗 Problem Link 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net ❔Thinking NxN 크기의 공간이 주어질 때, (0,0)에서 출발해 (N-1, N-1)로 이동하는 최소 비용을 반환한다. 💻Solution import heapq INF = int(1e9) dx = [-1,1,0,0] dy = [0,0,-1,1] def dijkstra(x, y, graph): q = [] n = len(graph) heapq.heappush(q, (graph[x][y], x, y)) while ..
[Baekjoon] 6497. 전력난
·
코딩테스트/Python
🔗 Problem Link 6497번: 전력난 성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들 www.acmicpc.net ❔Thinking 마을과 임의의 두 마을 사이의 거리가 주어질 때, 모든 마을을 연결하는 최소 비용의 가로등 설치 비용을 반환한다. 가로등은 두 마을 사이의 거리만큼의 비용이 든다. 💻Solution import heapq def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(pa..
[Baekjoon] 14501. 퇴사
·
코딩테스트/Python
🔗 Problem Link 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net ❔Thinking 상담에 걸리는 시간과 상담에 따른 이익이 주어질 때, N+1일 이후에 얻게되는 최대 이익을 반환한다. 💻Solution n = int(input()) dp = [0] * (n+1) table = [] max_price = 0 for i in range(1, n+1): t, p = map(int, input().split()) table.append([t,p]) for i in range(n-1, -1, -1): time = table[i][0] + i if time
[Baekjoon] 18405. 경쟁적 전염
·
코딩테스트/Python
🔗 Problem Link 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net ❔Thinking NXN 시험관에 바이러스가 순서대로 상,하,좌,우로 퍼져나갈 때, S초 뒤에 X,Y에 존재하는 바이러스를 반환한다. 바이러스는 1~K까지 있고, 작은 순서대로 퍼져간다. 💻Solution import heapq import sys input = sys.stdin.readline dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] n, k = map(int, input().s..