728x90

알고리즘 공부(C++) 83

10845 큐

10845번: 큐 (acmicpc.net) 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net import sys queue = list() N = int(input()) for i in range(N): str = sys.stdin.readline() if (str[:4] == 'push'): queue.append(int(str[5:])) elif (str[:3] == "pop"): if (len(queue) != 0): print(queue[0]) queue.pop(0) else: print(..

1929 소수 구하기

1929번: 소수 구하기 (acmicpc.net) 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net import math M, N = map(int, input().split()) arr = [] def isPrime(num): if num == 1: return False elif num == 2: return True else: for j in range(2, int(math.sqrt(num)) + 1): if num % j == 0: return False return True for i in range(M, N+1): if isPrim..

9012 괄호

문자열 문제 9012번: 괄호 (acmicpc.net) 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net T = int(input()) stack = [] answer = [] state = 1 lst = [[] for _ in range(T)] for i in range(T): str = input() lst[i] = list(str) for i in range(T): state = 1 stack = [] for j in range(len(lst[i])): if lst[i][j]..

17478 재귀함수가 뭔가요?

17478번: 재귀함수가 뭔가요? (acmicpc.net) 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net N = int(input()) print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.") def jaegui(n): if (n == N): print('_' * 4 * n + "\"재귀함수가 뭔가요?\"") print('_' * 4 * n + "\"재귀함수는 자기 자신을 호출하는 함수라네\"") print('_' * 4 * n + "라고 답변하였지.") return else: print..

1026 보물

1026번: 보물 (acmicpc.net) 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net N = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) S = 0 A.sort() B.sort(reverse = True) for i in range(N): S += A[i] * B[i] print(S) 꽤나 간단했던 이번 문제 A와 B의 배열을 재정렬해서 그 곱과 합을 최소로 하는 문제였다. 그나마 애를 먹었..

1476 날짜 계산

1476번: 날짜 계산 (acmicpc.net) 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 어제 했던 브루트포스 문제를 오늘도 해봤다.. 정답률이 높았던 문제인데.. 맞긴맞았다. 하지만 코드를 더 짧게 할 필요가 있어 보인다. E,S,M = map(int, input().split()) i = 0 while True: if (E % 15 == 0): E = 0 if (S % 28 == 0): S = 0 if (M % 19 == 0): M = 0 if (i != 0 and i % 15 == E and i % 2..

1436 영화감독 숌

1436번: 영화감독 숌 (acmicpc.net) 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net N = int(input()) first = 666 while N != 0: if ('666' in str(first)): N -= 1 if (N == 0): break first += 1 print(first) 간단한 문제였는데 아이디어 생각을 못 해서 오래걸렸다.. 666이라는 문자열만 포함되면 되고 브루트포스 알고리즘 => 모~~~~~~든 수 다 참조! 이므로 first를 하나하나 더해서.. 667 668..

1966 프린터 큐

1966번: 프린터 큐 (acmicpc.net) 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net tnum = int(input()) temp = [] for _ in range(tnum): N,M = map(int, input().split()) pr = list(map(int, input().split())) temp = [0 for _ in range(N)] temp[M] = 1 count = 0 while True: if pr[0] == max(pr): count += 1 if temp[0] != 1: pr..

11047 코인

11047번: 동전 0 (acmicpc.net) 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net N,K = map(int, input().split()) temp = [] result = 0 for i in range(N): temp.append(int(input())) for i in range(N - 1, -1, -1): if K // temp[i] >= 1: result += K // temp[i] K -= K // temp[i] * temp..

10773 제로

10773번: 제로 (acmicpc.net) 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net K = int(input()) result = 0 temp = [] for _ in range (K): a = int(input()) if a != 0 : temp.append(a) else: temp.pop(len(temp) - 1) for i in temp: result += i print(result) 0이 나올 때마다 list에 있던 값 중 하나를 삭제하고 모든 값을 더하는 문제..

728x90