본문 바로가기

전체 글

(227)
16234번: 인구 이동 / gold 5 / 구현, 시뮬레이션 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net ''' 16234번: 인구 이동 / gold 5 / 구현, 시뮬레이션 ''' import sys sys.setrecursionlimit(10**8) input = sys.stdin.readline dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] def dfs(x, y): visited[x][y] = True for i in range(4): nx = dx[i] +..
17136번: 색종이 붙이기 / gold 2 / 백트래킹 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net ''' 17136번: 색종이 붙이기 / gold 2 / 백트래킹 ''' import sys input = sys.stdin.readline # 그래프 입력 graph = [] for _ in range(10): graph.append(list(map(int, input().split()))) remain = [0, 5, 5, 5, 5, 5] result = 26 def check_cove..
13023번: ABCDE / gold 5 / 백트래킹 https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net ''' 13023번: ABCDE / gold 5 / 백트래킹 ''' import sys input = sys.stdin.readline sys.setrecursionlimit(10**8) # 백트래킹을 이용한 친구 관계 확인 def check_friend(s): # 조건에 맞는 친구 관계 있을 시 / 종료조건 if len(visited) == 5: print(1) exit() for next in relation[s]: if next not in visited: visited.add(next) chec..
14891번: 톱니바퀴 / gold 5 / 구현, 시뮬레이션 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net ''' 14891번: 톱니바퀴 / gold 5 / 구현, 시뮬레이션 ''' import sys from collections import deque input = sys.stdin.readline # 톱니바퀴 입력받기 graph = deque() for i in range(4): case = deque(input().rstrip()) graph.append(case) # 회전 입력받기 move..
2583번: 영역 구하기 / silver 1 / DFS https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net ''' 2583번: 영역 구하기 / silver 1 / DFS ''' import sys input = sys.stdin.readline sys.setrecursionlimit(10**8) # x,y ~ a,b 꼭짓점 직사각형 graph에 넣는 함수 def put_square(y, x, b, a): for i in range(x, a): for j in range(y, b): ..
3085번: 사탕 게임 / silver 2 / 브루트포스 https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net ''' 3085번: 사탕 게임 / silver 2 / 브루트포스 ''' import sys input = sys.stdin.readline def simulation(): stack_len_row = [] # 가로 for i in range(N): stack_value = board[i][0] len = 1 for j in range(1, N): if board[i][j] == stack_value: len += 1 else: stack_len_row.append(len) len = 1 stack_value = b..
4991번: 로봇 청소기 / gold 1 / BFS, 백트래킹 https://www.acmicpc.net/problem/4991 4991번: 로봇 청소기 각각의 테스트 케이스마다 더러운 칸을 모두 깨끗한 칸으로 바꾸는 이동 횟수의 최솟값을 한 줄에 하나씩 출력한다. 만약, 방문할 수 없는 더러운 칸이 존재하는 경우에는 -1을 출력한다. www.acmicpc.net ''' 4991번: 로봇 청소기 / gold 1 / BFS, 백트래킹 ''' import sys from collections import deque input = sys.stdin.readline dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # 더러운 칸 접근 가능한지 확인 def bfs_check(): visited = [[False for _ in range(w)] for _ ..
17825번: 주사위 윷놀이 / gold 2 / 백트래킹 https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 www.acmicpc.net ''' 17825번: 주사위 윷놀이 / gold 2 / 백트래킹 ''' # 말 위치에 따라 게임판 경로 전환하는 함수 def check_change_board(i, horse): # 5, 10, 15 지점일때, board (0) -> board (1) (2) (3) if horse[i][0] == 0: if horse[i][1] == 5: horse[i][0], horse[i][1] = 1, 0 ..