Algorithm/Problem Solving 155

[프로그래머스/Programmers] [3차] 파일명 정렬

파일명 정렬 📝문제 👨‍💻코드 import re def solution(files): answer = [] files2 = [] for i in files: a = re.split(r"([0-9]+)", i) files2.append([a, i]) result = sorted(files2, key=lambda x: (x[0][0].lower(), int(x[0][1]))) for i in range(len(result)): answer.append(result[i][1]) return answer 🤔Review 정규표현식을 사용해서 split을 하였다 문자숫자문자숫자 순서대로 나와도 처음숫자 그룹으로 sort할 수 있기 때문에 정규표현식을 사용해서 숫자 기준으로 split한 후 정렬하였다.

[프로그래머스/Programmers] 네트워크

네트워크 📝문제 👨‍💻코드 from collections import deque def bfs(graph, target, visited): queue = deque() queue.append(target) while queue: a = queue.popleft() for i in graph[a]: if visited[i] == 0: visited[i] = 1 queue.append(i) def solution(n, computers): answer = 0 visited = [0] * (n + 1) graph = [] for i in range(n + 1): graph.append([]) for i in range(len(computers)): for j in range(len(computers[i])):..

[백준/BOJ] 14502 - 연구소

14502 - 연구소 📝문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자. 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0..

[백준/BOJ] 3190 - 뱀

3190 - 뱀 📝문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸..

[백준/BOJ] 5567 - 결혼식

5567 - 결혼식 📝문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 👨‍💻코드 import sys n = int(input()) m = int(input()) arr = [] answer = [] result = [] for i in range(n + 1): arr.append([]) for i in range(m): a, b = map(int, sys.stdin.readline().split()) arr[a].ap..

[백준/BOJ] 10773 - 제로

10773 - 제로 📝문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 👨‍💻코드 k = int(input()) arr = [] stack = [] for i in range(k): arr.append(int(input())) for i in arr: if i != 0: stack.append(i) else: stack.pop() print(sum(stack)..