목록백준 python 기록 (69)
작은 지식주머니

https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net for문을 돌면서 브루트포스 풀기에는 크기가 컸고 스텍으로 푸는게 가장 현명하다고 생각하였습니다. FOR 문을 돌면서 크기를 체크하고 조건에 해당하면 STACK에 있는 변수값으로 결과값을 도출하면 됩니다. n = int(input()) s = list(map(int,input().split())) answer = [-1] * n stack = [] stack.append(0) for i in range(1,..

https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 후위 표기식이 뭔지몰라서 조금 해맸는데 스택으로 간단히 해결하였습니다. A,B,C는 아스키코드로 값을 변환해서 사용하면 되는거고 A B C * + 가 들어왔을 경우 우선 A,B,C를 전부 스텍에 저장 사칙연산이 들어왔다면 스택에서 값을 두개 빼내서 계산 -> 반복 후 출력을 하면 끝나는 문제입니다. n = int(input()) s = input() li = [0] * n for i i..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 간만에 정말 재밌게 풀었던 문제였습니다. 기본적으로 DFS를 사용해서 문제풀이를 진행하였습니다. target과 direction을 정하고나서 해당 target에 연관된 모든 톱니바퀴를 dfs를 통해서 위치변환을 마치고 마지막으로 처음 정한 target의 톱니바퀴를 변경시켜 문제풀이를 하였습니다. from collections import deque wheel = [] for i in range..

https://www.acmicpc.net/problem/1041 1041번: 주사위 첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수 www.acmicpc.net https://kkk4872.tistory.com/130 파이썬 그리디 알고리즘 백준 1041 주사위 문제 주사위는 위와 같이 생겼다. 주사위의 여섯 면에는 수가 쓰여 있다. 위의 전개도를 수가 밖으로 나오게 접는다. A, B, C, D, E, F에 쓰여 있는 수가 주어진다. 지민이는 현재 동일한 주사위를 N^ kkk4872.tistory.com 해당 블로그를 참고하였습니다..

https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net DP문제인건 알았는데 어떻게 처리해야 할지 오랜만에 풀다보니 감이 안왔었는데 초반에는 BFS식으로 풀었다가 시간초과가 발생했습니다. from collections import deque n,m = map(int,input().split()) s = [] dp = [[0]*(m+1) for _ in range(n+1)] plan = [[0,1],[1,0],[1,1]] for i in ..

https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 굉장히 노가다를 강요하는 BFS문제였읍니다. 하면서 아 변수명좀 제대로 지을걸.. 이라는 생각이 절로 드는 문제였읍니다. from collections import deque while True: L, R, C = map(int,input().split()) if (L + R + C) == 0: exit() building = [] visited = [[[0]*C for _ in range(R)] fo..

https://www.acmicpc.net/problem/9084 9084번: 동전 우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는 www.acmicpc.net DP로 풀수 있는 문제. 예전에 비슷한 문제를 푼 기억이 나서 금방 풀었다. T = int(input()) for _ in range(T): n = int(input()) s = list(map(int,input().split())) goal = int(input()) dp = [0 for i in range(goal+1)] dp[0] = 1 for i in s: for j in ..

https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net A,B,C,D,E 가 이어지도록 DFS를 짜서 내놓으면 된다. idx가 4가 되면 끝나는 로직이므로 시간도 오래 걸리지 않을거라 생각했다. 바로 python3로 제출해버리기 n, m = map(int, input().split()) arr = [[] for i in range(n)] visited = [0] * n for i in range(m): a, b = map(int, input().split()) arr[a].append(b) arr[b].append(a) def dfs(idx, x): if ..