IT/알고리즘 24

[백준] 덱 10866.python

문제 - 덱은 push front, push bakc, pop front, pop back이 존재한다. - 앞선 queue와 stack과 같다. 해설 및 코드 - 시간초과로 인해 sys에서 input을 가져왔다. - 리스트로 구현 # stack + queue가 섞인 것 = 덱 import sys # 시간초과 방지 N = int(sys.stdin.readline().rstrip()) arr = [] for _ in range(0, N): cmd = list(sys.stdin.readline().rstrip().split()) if cmd[0] == 'push_front': arr.insert(0, cmd[1]) elif cmd[0] == 'push_back': arr.append(cmd[1]) elif c..

IT/알고리즘 2021.02.07

[백준] 큐 10845.python

문제 - stack과 비슷한 문제이다. - Queue를 구현한다. 해설 및 코드 Python의 경우 Queue 내장 함수가 존재하지만 정의된 함수가 매우 적다. 따라서 list로 구현하였다. stack과 대부분 동일하지만, Queue의 pop은 제일 앞을 가져온다. import sys N = int(sys.stdin.readline().rstrip()) que = [] for _ in range(N): cmd = list(sys.stdin.readline().rstrip().split()) if cmd[0] == "push": que.append(cmd[1]) elif cmd[0] == "pop": # 제일 앞을 pop 한다. print(que.pop(0) if len(que) else -1) elif ..

IT/알고리즘 2021.02.04

[백준] 스택 10828.python

문제 - Python으로 Stack 짜기 - Stack의 명령어를 입력받은 대로 출력하면 된다. 해설 및 코드 - 시간 초과가 제일 큰 벽이었다. - 이전 input 대신 버퍼를 읽는 sys를 선언하여, 시간 초과를 잡을 수 있었다. - Python에서 stack은 List로 대신할 수 있다. # 시간 초과를 해결하기 위한 sys 선언 import sys N = int(sys.stdin.readline().rstrip()) # python은 list로 stack을 흉내 낼 수 있음 stack = [] # 0부터 N-1까지 반복 for _ in range(N): # push의 경우는 두 개의 명령어가 필요하므로 list 형식으로 받는다. cmd = list(sys.stdin.readline().rstrip..

IT/알고리즘 2021.02.03

[백준] 수찾기 1920.python

Java가 주 언어이므로 Python을 공부할 겸 Python으로 문제를 풀었다. 따라서, Python 문법에 대한 설명이 포함되어 있다. 문제 - N개의 숫자 배열(arr)을 입력받았을 때, 각각의 숫자(총 M개)가 arr 배열에 포함이 되는지를 묻는 문제이다. - 배열을 모두 탐색하면서 숫자가 존재하는 지를 반복문을 통해 찾으면 된다고 생각했지만, 그러면 시간초과 오류가 난다! 해설 및 코드 - for문을 이용하여 탐색하면 O(N)의 시간이 걸린다. - 이진탐색은 O(logN)의 시간이 걸리므로 for문으로 탐색하는 것보다 더 적은 시간이 걸린다. - 하지만 이진 탐색 전에 반드시 탐색할 배열을 sort 해줘야 한다. 안하면은 절반으로 나누면서 가는 이유가 없잖아? # bs 함수 - 이진탐색 # lo..

IT/알고리즘 2021.01.28