본문 바로가기

알고리즘29

[백준] 토마토 [찾지 못한 부분 + 코드 + 해설] 구현 & BFS & 최단경로 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 코드 import sys from collections import deque input = sys.stdin.readline m, n = map(int, input().split()) box = [list(map(int, input().split())) for _ in range(n)] def bfs(first_queue): dx = [(-1, 0),.. 2023. 7. 16.
[프로그래머스] Lv.2 리코쳇 로봇 [풀지 못했던 이유 + 코드 + BFS가 왜 최단 경로를 보장할까] 구현 & BFS & 시뮬레이션 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from collections import deque def bfs(r, c, n, m, board): visited = [[0] * m for _ in range(n)] visited[r][c] = 1 queue = deque([[r, c]]) answer = -1 while queue: q = queue.popleft() x, y = q[0], q[1] i.. 2023. 7. 14.
[백준] 2910 빈도 정렬 [풀이 해설 + 코드] 구현 & 자료구조 https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 코드 import sys input = sys.stdin.readline n, c = map(int, input().split()) dic = {} arr = list(map(int, input().split())) for i in range(len(arr)): if arr[i] not in dic: dic[arr[i]] = [i, 1, arr[i]] else: dic[arr[i]][1] += 1 result = sort.. 2023. 7. 7.
[백준] 15662 톱니바퀴(2) [풀이 + 코드 + 해설] 구현 & DFS & 재귀 https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 코드 import sys from collections import deque input = sys.stdin.readline # 톱니바퀴 개수 t = int(input()) # T개의 톱니바퀴 받기 top = [deque(list(map(int, input().strip()))) for _ in range(t)] # 회전수 k = int(input()) # 회.. 2023. 7. 6.