[백준_python] 덱 || 10866
·
🎯PS
www.acmicpc.net/problem/10866 10866번: 덱첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net# 덱 import sys from collections import deque deq = deque() result = [] n = int(sys.stdin.readline()) for _ in range(n): cmd_input = sys.stdin.readline().strip().split(' ') cmd = cmd_input[0] if cmd == "push_front": deq.appen..
[백준_python] 큐 || 10845
·
🎯PS
www.acmicpc.net/problem/10845 10845번: 큐첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net# 큐 import sys queue = [] result = [] n = int(sys.stdin.readline()) for _ in range(n): cmd_input = sys.stdin.readline().strip().split(' ') cmd = cmd_input[0] if cmd == "push": queue.append(int(cmd_input[1])) elif cmd == "pop..
[백준_python] 스택 || 10828
·
🎯PS
www.acmicpc.net/problem/10828 10828번: 스택첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #스택 import sys n = int(sys.stdin.readline()) stack = [] result = [] for _ in range(n): cmd_input = sys.stdin.readline().strip().split(' ') cmd = cmd_input[0] if cmd == "push": stack.append(int(cmd_input[1])) elif cmd == "p..
[백준_python] 숫자 카드 1, 2 || 10815, 10816
·
🎯PS
www.acmicpc.net/problem/10815 10815번: 숫자 카드첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,www.acmicpc.net기존에 가지고 있던 카드라면 1, 아니라면 0을 출력하는 문제이다. 내가 맨 처음 이분 탐색을 이용해주었던 문제라서 다른 분들 코드를 보며 참고했던 기억이 난다. 또 다른 이분 탐색 문제로는, 전에 풀었던 수 찾기(1920) www.acmicpc.net/problem/1920 [백준_python] 이분 탐색 - 수 찾기 || 1920 :: coding 공부 ~^~^ (tistory.co..
[백준_python] 나이순 정렬 || 10814
·
🎯PS
www.acmicpc.net/problem/10814 10814번: 나이순 정렬온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net#나이순 정렬 n = int(input()) person = [] for _ in range(n): age, name = input().split(' ') person.append([int(age),name]) person.sort(key=lambda x : (x[0])) for i in person: print(i[0], i[1])
[백준_python] 괄호 || 9012
·
🎯PS
www.acmicpc.net/problem/9012 9012번: 괄호괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고www.acmicpc.net#괄호 t = int(input()) result = [] for _ in range(t): vps = list(input()) cnt = 0 for i in vps: if i == "(": cnt += 1 else: cnt -= 1 if cnt < 0: break if cnt == 0: result.append("YES") else: result.append("NO") print(*r..
[백준_python] 수 정렬하기 2 || 2751 (pypy3, 시간 초과)
·
🎯PS
www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.www.acmicpc.net문제를 보면서 전에 풀어본 수 정렬하기(2750)과 뭐가 다르냐?? 하면서 저번에 넣었던 코드를 그대로 넣어보았다.#수 정렬하기 2 #? 시간초과 n = int(input()) num = [] for _ in range(n): num.append(int(input())) num.sort() print(*num, sep = "\n")알고보니, 2750때와는 다르게, 수의 범위가 훨씬 컸다. 그래서인지 결과..
[백준_python] 최대공약수와 최소공배수 || 2609 (유클리드 호제법)
·
🎯PS
www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.www.acmicpc.net유클리드 호제법a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. (b가 0이 될 때까지 반복)gcd(24, 18) = gcd(18, 6) = gcd(6, 0)최소공배수는 a*b/최대공약수 라고 한다.a, b = map(int, input().split(' '))a_max = []b_max = []for i in range(1, a+1):    if a % i == 0:        a_max.append(i)for..
[백준_python] 카드 2 || 2164 (스택, 큐, 덱)
·
🎯PS
www.acmicpc.net/problem/2164 2164번: 카드2N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가www.acmicpc.net스택(Stack)후입 선출(LIFO : Last-In First-Out): 상자가 차례로 쌓인다고 생각 : 가장 최근에 쌓인 상자가 가장 위에 있게 되고, 또 먼저 나가게 된다.큐(Queue)선입 선출(FIFO : First-In First-Out): 매표소라고 생각 : 가장 먼저 들어온 사람이 가장 먼저 나가게 된다.덱(Deque)double-ended queue : 큐의 전단(front)와 후단(rear)에서 모..
[백준_python] 소수 찾기 || 1978
·
🎯PS
www.acmicpc.net/problem/1978 1978번: 소수 찾기첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.www.acmicpc.net소수 : 자기 자신이랑 1이랑 약수를 지니고 있는 수 1은 소수가 아니고, 다른 수들이 소수인지 아닌지를 판별하기 위해서는 2부터 하나씩 수를 키워 나눠떨어지는 지 아닌지를 확인해봐야 한다.#소수 찾기 n = int(input()) m = list(map(int, input().split())) count = 0 #소수의 개수 for i in m: cnt = 0 if i == 1: #소수가 아님 continue #아래 코드를 실행하지 않고 건너뜀!!! #?또는 cnt +=1을 해준다...