본문 바로가기

전체 글229

[백준] 10773번 제로(with python) https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 1. 내가 작성한 코드 n = int(input()) arr = [] for i in range(n): i = int(input()) if i != 0: arr.append(i) elif i == 0: arr.pop() print(sum(arr)) 스택에 대해 알고 있다면 손쉽게 풀 수 있는 문제이다. input된 값이 0이 아니면 append, 0이면 pop을 .. 2023. 2. 8.
[백준] 1012번 유기농 배추(with python) https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 1. 내가 작성한 코드 1. BFS풀이 from collections import deque def bfs(matrix, x,y): queue = deque() queue.append((x,y)) matrix[x][y] = 0 while queue: x,y = queue.popleft() dx = [-1,1,0,0] dy = [0,0,-1,1] for i in range(4): nx = x + dx[i] ny.. 2023. 2. 8.
[프로그래머스] Level1 기사단원의 무기(with python) https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(number, limit, power): result = 0 for j in range(1, number+1): cnt = 0 for i in range(1,int(j**0.5)+1): if j % i == 0: if i == (j//i): cnt+=1 else: cnt+=2 if cnt 2023. 2. 8.
[백준] 24444번 너비 우선 탐색 1(with python) https://www.acmicpc.net/problem/24444 24444번: 알고리즘 수업 - 너비 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양방 www.acmicpc.net 1. 내가 작성한 코드 from collections import deque import sys input = sys.stdin.readline n, m, r = map(int, input().split()) graph = [[] for i in range(n+1)] visit = [0] * (n+1) cnt = 1 for.. 2023. 2. 8.
[백준] 2667번 단지번호붙이기(with python) https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 1. 내가 작성한 코드 from collections import deque n = int(input()) total = [list(map(int, input())) for i in range(n)] result = [] #단지 개수를 담을 LIST dx = [-1,1,0,0] #좌우 이동을 위한 좌표 dy = [0,0,-1,1] #상하 이동을 위한 좌표 def bfs(total, x,y): que.. 2023. 2. 8.
[백준] 2606번 바이러스(with python) https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 1. 내가 작성한 코드 from collections import deque n = int(input()) #정점 m = int(input()) #간선 matrix = [[0] * (n+1) for i in range(n+1)] for i in range(m): a,b = map(int, input().split()) matrix[a][b] = matrix[b][a] = 1 visit = [0] * (.. 2023. 2. 8.
[백준] 24479번 깊이 우선 탐색1 (with python) https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 1. 내가 작성한 코드 dfs, bfs 넘나리 어렵다 ㅠ_ㅠ import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) n, m, r = map(int,input().split()) visit_dfs = [0] * (n+1) graphs = [[]for _ in r.. 2023. 2. 7.
[알고리즘] DFS, BFS + 문제풀이 인접 행렬 : 2차원 배열로 그래프의 연결관계 표현 인접 리스트 : 리스트로 그래프의 연결 관계 표현 DFS 루트 노드에서 시작해서 다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방법 깊은 부분을 우선적으로 탐색 스택, 재귀함수 이용 def dfs(graph, v, visited): visited[v] = True print(v, end=' ') for i in graph[v]: if not visited[i]: dfs(graph, i, visited) graph = [ [], [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], [2,6,8], [1,7] ] visited = [False] * 9 dfs(graph, 1, visited) BFS 가까운 노드부터 탐색하는.. 2023. 2. 7.
[백준] 1260번 DFS와 BFS (with python) https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 1. 내가 작성한 코드 from collections import deque n, m, v = map(int, input().split()) visit_dfs = [0] * (n+1) visit_bfs = [0] * (n+1) matrix = [[0]*(n+1) for _ in range(n+1)] for i in range(m): a,b = map(int, .. 2023. 2. 7.