What is Computer?
[Python] 백준 '키로거' 5397 | 스택, 구현, 그리디 자료구조 문제
다른 문제 모음집 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ ..
[Python] 백준 '프린터 큐' 1966번 | 큐, 구현, 그리디 자료구조 문제
다른 문제 모음집 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다. 예를 들어 Queue에 4개의 문서(A B C D)가 있..
[python] max, min 함수의 매개변수 key, default 활용
max(iterable, *[key, default]) min(iterable, *[key, default]) a = [5, 5, 4, 3, 2, 1, 0, 0] b = [(data, idx) for idx, data in enumerate(a)] # a에 index 정보를 추가한 형태 print(b) # >> [(5, 0), (5, 1), (4, 2), (3, 3), (2, 4), (1, 5), (0, 6), (0, 7)] 위 리스트를 가지고 예제를 확인할 것임. * 리스트 b는 리스트 a의 index 정보를 배열로 추가한 것임. (5, 0)과 (5, 1), (0, 6)과 (0, 7)을 max 또는 min 함수를 사용할 때 어떻게 반환할지 보기 위한 예제. ● 기본 예제 print(max(a)) # >..
[Python] 백준 '스택 수열' 1874번 | 스텍, 그리디 자료구조 문제
다른 문제 모음집 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 10..
[Python] 백준 '블랙잭' 2798번 | 배열, 완전탐색 자료구조 문제
다른 문제 모음집 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자..
파이참(PyCharm)으로 알고리즘 연습 쉽게 하기 | 입출력 파일 설정 (input.in, output.out)
서론 알고리즘 연습을 할 때, 입력과 출력, 내가 짠 코드를 한번에 볼 수 있어서, 피드백을 하기 쉽습니다. 백준이나 leetcode와 같은 알고리즘 연습 사이트를 보면, 테스트를 진행할 때 여러 입력을 넣고 출력을 확인해봐야 하는데 위와 같은 환경이, 이를 편리하게 해줍니다. (input.in 창에 '예제 입력'을 복사-붙여넣기 하고 main.py를 run하면 output.out에 출력됨) 방법 1. 먼저 input.in 파일과 output.out 파일, main.py 을 만듭니다. (확장자만 지켜주시면 됩니다) 2. 메뉴바 (RUN > Edit Configurations) 혹은 오른쪽 위에 위치한 Edit Configurations 를 클릭 아래와 같은 창이 뜹니다. 3. Configuration >..