전체 글 219

[Baekjoon/Python] 15650번: N과 M (2) - 효과는 굉장했다!

15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 알고리즘 분류 백트래킹 SOLUTION import sys from itertools import combinations N, M = map(int, sys.stdin.readline().split()) combi = list(combinations([i for i in range(1,N+1)], M)) #combinations()함수 이용 for i in combi: print(*i) # *를 통해 unpacking

[Baekjoon/Python] 9019번: DSLR - 효과는 굉장했다!

9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 SOLUTION import sys from collections import deque def bfs(A, B): queue = deque([[A, ""]]) # queue에 초기값 A와 커맨드가 입력될 빈문자열을 넣는다. visited = [False] * 10000 # 범위는 10000까지, D,S,L,R 명령을 통해 나온 숫자들을 방문 처리 하기 위한 공간 visited[A] = True..

[Baekjoon/Python] 14500번: 테트로미노 - 효과는 굉장했다!

14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 알고리즘 분류 구현 브루트포스 알고리즘 SOLUTION import sys def block(i, j): global answer for x in range(19): result = 0 for y in range(4): try: next_x = i + tetromino[x][y][0] # X좌표 next_y = j + tetromino[x][y][1] # Y좌표 result += paper[next_x][next_y] except IndexError: contin..

[Baekjoon/Python] 10026번: 적록색약 - 효과는 굉장했다!

10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 SOLUTION import sys from collections import deque sys.setrecursionlimit(10000) # recursion error 때문에 범위를 제한함 N

[Baekjoon/Python] 7662번: 이중 우선순위 큐 - 효과는 굉장했다!

7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 알고리즘 분류 자료 구조 트리를 사용한 집합과 맵 우선순위 큐 SOLUTION import sys import heapq for _ in range(int(sys.stdin.readline())): max_heap, min_heap = [], [] visited = [False] * 1000000 # k의 범위가 1000000까지 이므로 k = int(sys.stdin.readline()) for i in range(k): letter, n = sys.std..

[Baekjoon/Python] 7569번: 토마토 - 효과는 굉장했다!

7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 SOLUTION import sys from collections import deque def tomato(): while queue: z, y, x = queue.popleft() # 순차적으로 발견된 익은 토마토에서 부터 시작, 한번 실행되면 popleft()를 통해 중복 실행되지 않도록 함 for i in range(6): nx = x + dx[i] # x좌표 설정 ny = y..

[Baekjoon/Python] 5403번: AC - 효과는 굉장했다!

5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 알고리즘 분류 구현 자료 구조 문자열 파싱 덱 SOLUTION import sys from collections import deque T = int(sys.stdin.readline()) for _ in range(T): p = sys.stdin.readline() n = int(sys.stdin.readline()) array = deque(sys.stdin.readline().rstrip()[1:-1].split(',')) if n == 0: array = deque() state = True cnt = 0 fo..

[Baekjoon/Python] 1107번: 리모컨 - 효과는 굉장했다!

1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 알고리즘 분류 브루트포스 알고리즘 SOLUTION import sys N = int(sys.stdin.readline()) M = int(sys.stdin.readline()) if M: # 고장난 버튼이 있을때 broken_buttons = sys.stdin.readline().rstrip().split() else: broken_buttons = [] # +/- 버튼만 눌러서 움직일 경우 cnt = abs(100 - N) # N의 최댓값이 5..

[Baekjoon/Python] 16928번: 뱀과 사다리 게임 - 효과는 굉장했다!

16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 SOLUTION import sys from collections import deque def bfs(): queue = deque([1]) # 보드게임의 시작은 1번 칸부터 while queue: marker = queue.popleft() # 주사위의 눈 1 ~ 6 for move in range(1,7): move_marker = move + marker ..