전체 글

항공대 알고리즘 동아리 Koala 🥰
문제https://www.acmicpc.net/problem/17298자료구조, 스택 AlgorithmA[i] (입력 값) 리스트, NGE 리스트, stack 리스트를 준비인덱스를 스택으로 만들어서 각 인덱스의 오큰수를 찾아 졸업시키기졸업하지 못한 인덱스는 stack 리스트에 쌓임, 끝까지 졸업하지 못한다면 NGE 리스트에서 초기값 -1로 표현됨A[i] 리스트의 현재 비교값(A[i])와 졸업 대상 (A[stack[-1]])을 비교해 현재 비교값이 더 크면 오큰수를 발견한 것=> 오큰수를 해당 인덱스에 저장하고, 그 인덱스 값은 stack에서 pop되면서 졸업Coden = int(input())a_li = list(map(int, input().split()))NGE = [-1]*nstack_li = [0..
문제https://www.acmicpc.net/problem/1181 풀이* 첫째 줄에는 입력될 단어의 개수가, 두 번째 줄부터 마지막 줄까지는 단어가 한 줄씩 주어진다. * 길이가 짧은 것부터, 길이가 같으면 사전 순으로 정렬해 출력한다.1. 빈 리스트를 생성하고 입력받은 문자열을 리스트에 추가한다. 2. 리스트의 중복된 요소를 제거하기 위해 set으로 변경해 준다. (그리고 다시 리스트로 변환한다)3. 문제에서 제시한 대로 리스트를 정렬하고, 한 줄씩 출력한다. 코드 및 설명
문제풀이디큐를 구현한 다음 가장 위에 있는 카드를 버리고 그 다음 맨 위 카드를 맨 아래로 옮기는 작업을 반복한다카드가 1장 남았을 때 남은 카드를 출력한다코드from collections import deque n = int(input()) lst = [i for i in range(1, n+1)] q = deque() for i in lst:     q.append(i)      while len(q) != 1:     q.popleft()     x = q.popleft()     q.append(x)      print(q[0])
문제평석이는 단어 위로 아치형 곡선을 그어 같은 글자끼리(A는 A끼리, B는 B끼리) 쌍을 짓기로 하였다. 만약 선끼리 교차하지 않으면서 각 글자를 정확히 한 개의 다른 위치에 있는 같은 글자와 짝 지을수 있다면, 그 단어는 '좋은 단어'이다. 평석이가 '좋은 단어' 개수를 세는 것을 도와주자. 이 때 단어는 A또는 B로 이루어져 있다.입력첫째 줄에 단어의 수 N이 주어진다. (1 ≤ N ≤ 100)다음 N개 줄에는 A와 B로만 이루어진 단어가 한 줄에 하나씩 주어진다. 단어의 길이는 2와 100,000사이이며, 모든 단어 길이의 합은 1,000,000을 넘지 않는다.풀이스택을 이용한다. 단어의 왼쪽부터 시작해서 A바로 옆에 B가 있거나, B바로 옆에 A가 있으면 좋은 단어일 수 없기 때문에, 단어의 왼..
문제인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두근 설레서 시험 공부에 집중을 못 한다. 이번 중간고사에서도 역시 승환이는 설레는 가슴을 안고 간식을 받기 위해 미리 공지된 장소에 시간 맞춰 도착했다. 그런데 이게 무슨 날벼락인가! 그 곳에는 이미 모든 학생들이 모여있었고, 승환이는 마지막 번호표를 받게 되었다. 설상가상으로 몇몇 양심에 털이 난 학생들이 새치기를 거듭한 끝에 대기열의 순서마저 엉망이 되고 말았다. 간식을 나눠주고 있던 인규는 학우들의 터져 나오는 불만에 번호표 순서로만 간식을 줄 수 있다고 말했다. 그제야 학생들이 순서대로 줄을 서려고 했지만 공간이 ..
문제 https://www.acmicpc.net/problem/7795 Algorithmsort()함수를 통해 정렬한 후 각 경우마다 A가 B보다 더 클 때 j에 저장한 후 count에 더한다.   CodeT = int(input())for _ in range(T): N, M = map(int, input().split()) sizes_A = list(map(int, input().split())) sizes_B = list(map(int, input().split())) sizes_A.sort() sizes_B.sort() count = 0 j = 0 for i in range(N): while j
문제https://www.acmicpc.net/problem/11179풀이* 정수를 입력받고 2진법으로 변환한다.* 변환한 2진법을 뒤집고, 10진법으로 다시 변환하여 출력해야 한다.1. 정수를 입력받고 변수에 저장한다.2. 입력받은 정수를 2진법으로 변환한 뒤, 숫자를 뒤집어 저장한다.3. 뒤집어진 2진법을 다시 10진법으로 변환해 출력한다.코드 및 설명
문제&링크https://www.acmicpc.net/problem/19951 풀이1. 연병장의 높이를 map 배열에 입력받는다.2. 조교의 지시를 받을 때 sum 배열에서 시작 점에 해당하는 인덱스에 조교가 지시한 높이 k를 입력하고, 끝 점 + 1에 -k를 입력한다. 이렇게 하면 어느 지점부터 어느 지점까지 조교의 지시대로 수행해야 하는지 확인할 수 있다.3. 모든 조교의 지시를 받고 난 후 map과 sum 배열을 처음부터 순회한다.4. sum 배열의 값을 변수 s에 더하고, 해당 변수를 연병장 map에 더한다. 이렇게 하여 조교의 지시를 매 순간 수행하는 것이 아니라, 한 번에 수행할 수 있게 된다. 코드#include using namespace std;int map[100001] = {0};int..
문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다.예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다.입력첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.풀이dp배열을 이용한다. 이 때 dp[n]의 의미는 n번째 원소를 포함한 연속 부분합 중 최대값을 뜻한다. dp배열의 첫 번째 원소 값을 입력받은 수열의 첫 번째 값으로 설정하고,..
문제명절이 되면, 홍익이 집에는 조카들이 놀러 온다. 떼를 쓰는 조카들을 달래기 위해 홍익이는 막대 과자를 하나씩 나눠준다.조카들이 과자를 먹는 동안은 떼를 쓰지 않기 때문에, 홍익이는 조카들에게 최대한 긴 과자를 나눠주려고 한다.그런데 나눠준 과자의 길이가 하나라도 다르면 조카끼리 싸움이 일어난다. 따라서 반드시 모든 조카에게 같은 길이의 막대 과자를 나눠주어야 한다.M명의 조카가 있고 N개의 과자가 있을 때, 조카 1명에게 줄 수 있는 막대 과자의 최대 길이를 구하라.단, 막대 과자는 길이와 상관없이 여러 조각으로 나눠질 수 있지만, 과자를 하나로 합칠 수는 없다. 단, 막대 과자의 길이는 양의 정수여야 한다.입력첫째 줄에 조카의 수 M (1 ≤ M ≤ 1,000,000), 과자의 수 N (1 ≤ N..
문제 https://www.acmicpc.net/problem/10773Codeimport sysK = int(sys.stdin.readline()) stack = [] sum_v = 0 for i in range(K): num = int(sys.stdin.readline()) if stack and num == 0: stack.pop() else: stack.append(num)print(sum(stack))
문제https://www.acmicpc.net/problem/15813풀이* 첫 번째 줄에는 이름의 길이가, 두 번째 줄에는 이름이 주어진다.* 각 알파벳에 할당된 점수를 합쳐 출력해야 한다.1. 이름의 길이와 이름을 각 변수에 저장한다.2. 이름의 길이만큼 점수를 더하는 작업을 반복해야 한다.3. 알파벳의 점수는 A = 1, B = 2, ... , Z = 26점이므로, 알파벳의 아스키 코드 - 64로 간단히 구할 수 있다.코드 및 설명
KauKoala
Koala