전체 글 108

[Boj/백준] 15828 Python

문제출처: https://www.acmicpc.net/problem/15828 15828번: Router 인터넷을 사용하기 위해서는 컴퓨터에 인터넷 회선을 연결하거나 Wi-Fi를 연결해야 한다. 이렇게 연결된 네트워크를 통해 컴퓨터에는 통신이 가능하다. 마음에 드는 노래나 동영상이 있는 곳에 www.acmicpc.net 1. 문제 접근 방식 큐를 만들고 큐의 크기를 고려해서 input에 범위에 따라 분리해서 삽입시켰다. 2. 내가 푼 코드 import sys buffer = int(sys.stdin.readline()) queue = [] while True: x = int(sys.stdin.readline()) if x == -1: if len(queue) == 0: print('empty') brea..

[Boj문제풀이] 2021.09.07

[Boj/백준] 10845 Python

문제출처: https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1. 문제 접근 방식 큐를 import 해서 각 명령어마다 큐를 삽입,삭제 및 출력하는 방식을 구현하였다. 2. 내가 푼 코드 import sys from collections import deque case = int(sys.stdin.readline()) queue = deque() for i in range(case): desc = sys.stdin.readline..

[Boj문제풀이] 2021.09.06

[Boj/백준] 1406 Python

문제출처: https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 1. 문제 접근 방식 시간제한이 엄격하기 때문에 원래 풀려던 방법으로 풀면 시간초과가 발생할 것 같았다. 백준 5397번처럼 스택을 두개 두고 커서 옮길때마다 양스택으로 이동시키는 방법으로 접근했다. 2. 내가 푼 코드 import sys lstack = list(map(str,sys.stdin.readline().strip())) rstack = [] case = int(sys.stdi..

[Boj문제풀이] 2021.09.03

[Boj/백준] 1935 Python

문제출처: https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 1. 문제 접근 방식 스택으로 풀면 되겠다고 했는데 두번째 예제 케이스 같은 경우에는 어떻게 처리할까 고민을 많이 했다. 아스키코드와 리스트를 하나 더 사용해서 해결했다. 2. 내가 푼 코드 import sys case = int(sys.stdin.readline()) form = sys.stdin.readline().strip() num = [] for i in range(..

[Boj문제풀이] 2021.09.02

[Boj/백준] 15815 Python

문제출처: https://www.acmicpc.net/problem/15815 15815번: 천재 수학자 성필 길이가 100이 넘지 않는 수식이 예제 입력과 같이 공백 없이 입력된다. 수식은 0부터 9까지의 숫자와 연산자 '+', '-', '*', '/' 로만 이루어져 있다. 또한, 수식의 계산 중간 과정의 모든 결과는 항상 2 www.acmicpc.net 1. 문제 접근 방식 문자열을 순환하면서 연산자면 스택에서 pop후에 계산하고 다시 스택에 append하고 숫자면 stack에 append하는 방식으로 접근했다. 2. 내가 푼 코드 import sys x = sys.stdin.readline().strip() result = 0 stack = [] for i in x: if i == '+': a=st..

[Boj문제풀이] 2021.09.01

[Boj/백준] 5397 Python

문제출처: https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 1. 문제 접근 방식 맨 처음에는 스택을 하나 두고 인덱스를 current 변수로 조정하면서 insert메소드로 삽입 pop으로 삭제하려고 했으나 시간초과가 발생했다. 그 후 스택 두개를 두고 lstack에 먼저 삽입한 다음에 >가 오면 lstack에 있는 원소를 rstack으로 append하고 0: current-=1 elif i == '>': if current < len(s..

[Boj문제풀이] 2021.08.31

[Boj/백준] 11899 Python

문제출처: https://www.acmicpc.net/problem/11899 11899번: 괄호 끼워넣기 첫 번째 줄에 S를 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 출력합니다. 불가능한 경우는 주어지지 않습니다. www.acmicpc.net 1. 문제 접근 방식 문자열을 순환하면서 )면 스택의 마지막이 (인지 확인하고 (이면 스택에 삽입하는 방법으로 풀었다. 2. 내가 푼 코드 import sys x = sys.stdin.readline().strip() stack = [] count = 0 for i in x: if i == '(': stack.append(i) elif i == ')': if stack and stack[-1] == '(': stack.pop() el..

[Boj문제풀이] 2021.08.30

[Boj/백준] 15922 Python

문제출처: https://www.acmicpc.net/problem/15922 15922번: 아우으 우아으이야!! N개의 선분을 모두 그렸을 때, 수직선 위에 그어진 선분 길이의 총합을 출력한다아아어으잉에애야우아으아이아야아아아아아아이야!!! www.acmicpc.net 1. 문제 접근 방식 처음엔 한번에 모든 경우를 배열에 넣은 다음 조건을 통해 pop시키고 sum을 더해가면서 구하려고 했으나 시간초과가 발생했다. 처음에 첫 케이스를 받고 여러 조건들을 배정해서 첫 케이스의 숫자를 조정하는 방식으로 바꿔서 풀었다. 2. 내가 푼 코드 #시간 초과 코드 import sys case = int(sys.stdin.readline()) arr=[] for _ in range(case): data=sys.stdi..

[Boj문제풀이] 2021.08.29

[Boj/백준] 16953 Python

문제출처: https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 1. 문제 접근 방식 B에서 A로 만들 생각을 했다. 그리디 문제처럼 풀어보려고 했고 m의 마지막 숫자가 1이면 1을 삭제하고 아니면 2로 나누는 방법을 사용했다. 2. 내가 푼 코드 import sys n, m = map(int,sys.stdin.readline().split()) count=1 while True: if m == n: print(count) break if ( m % 2 != 0 and m %10 != 1) or m < n: print(-1) break if m % 10 == 1: m=m//..

카테고리 없음 2021.08.29

[Boj/백준] 14247 Python

문제출처: https://www.acmicpc.net/problem/14247 14247번: 나무 자르기 영선이는 나무꾼으로 나무를 구하러 오전에 산에 오른다. 산에는 n개의 나무가 있는데, 영선이는 하루에 한 나무씩 n일 산에 오르며 나무를 잘라갈 것이다. 하지만 이 산은 영험한 기운이 있어 www.acmicpc.net 1. 문제 접근 방식 두 개의 리스트를 한 개의 리스트로 묶고 grow가 작은 순서대로 정렬하고 tree + grow * i의 값을 sum에 더해주는 방식을 생각했다. 2. 내가 푼 코드 import sys case = int(sys.stdin.readline()) tree = list(map(int,sys.stdin.readline().split())) grow = list(map(i..

[Boj문제풀이] 2021.08.28