전체 글

항공대 알고리즘 동아리 Koala 🥰
문제 코드 n= int(input()) #테스트 케이스의 개수 for _ in range(n): A,B=map(str,input().split()) a = sorted(list(A)) b = sorted(list(B)) if a == b: print("%s & %s are anagrams."%(A, B)) else: print("%s & %s are NOT anagrams."%(A, B)) 풀이 구현 : 1. A와 B의 단어에서 사용된 알파벳을 하나하나 구분하여 리스트를 만든다. 2. A,B의 리스트를 알파벳 순서로 정렬한다. 3. 정렬한 리스트가 같다면 애너그램 성립 ! 실현 : 1. 우선 int(input())을 이용하여 테스트 케이스의 개수를 입력받는다. 2.
https://www.acmicpc.net/problem/2315 2315번: 가로등 끄기 첫째 줄에는 2개의 정수 N(1 ≤ N ≤ 1,000), M 이 있다. 첫 번째 정수 N은 가로등의 개수를 나타내는 정수이고, 두 번째 정수 M은 마징가 처음에 위치하는 가로등 번호이다. 다음 N 개의 줄에는 각 가 www.acmicpc.net 문제 문제 유형 다이나믹 프로그래밍, 누적 합 문제 분석 실력과 기술이 좋지않으면 잡무나 평생하게 된다는 철학을 담은 문제다. 마징가z가 특정 위치(가로등) 에서 시작하고, 모든 가로등을 끌 때 까지 소모되는 전력양을 구하는 문제이다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.I..
https://www.acmicpc.net/problem/2435 2435번: 기상청 인턴 신현수 첫째 줄에 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 주어진다. N은 온도를 측정한 전체 날짜의 수이다. N은 2이상, 100이하이다. K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사 www.acmicpc.net 문제 분석 N개의 정수를 입력 받아서 연속되는 K개의 수의 합이 최대가 되는 값을 구하는 문제이다. 누적합을 사용해야 시간 제한을 어기지 않을 수 있다. 코드 #include #include using namespace std; int main(){ int n, k; cin>>n>>k; int sum[n+1]; sum[0] = 0; int tmp; for(int i=1;..
https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 문제분석 분류 구간합(Prefix sum) 다이나믹 프로그래밍(Dynamic Programming) 문제설명 배열의 크기 N 입력 구간합 구하는 횟수 M 입력 배열 입력, 구간합 좌표 입력 입력된 좌표 (시작X, 시작Y) (종료X, 종료Y) 사이의 구간을 입력 구간합 -> O(N)의 속도로 문제 도출 입력 4 3 1 2 3 4 2 3 4 5 3 4 5 6..
2504번: 괄호의 값 (acmicpc.net) 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 소스코드 문제풀이 많은 시간을 투자했는데 결국 구글링의 힘을 빌려 알고리즘을 보고 구현만 직접 한 문제이다. 어떤 변수를 통해서 값을 곱하고 나눠야 하지않을까 까지는 접근하였는데, 너무 복잡하게 생각했는지 아니면 남은 한 문제만 빨리 해결하고 싶어서 그랬던 건지 직전 인덱스의 값만 보고 result에 더할 생각을 하지 못했다. 결국 내가 생각한 방법이 틀렸구나 모르겠다 하고 검색한 것인데 예상외로 너무 단순해서 ..
https://www.acmicpc.net/problem/14627 14627번: 파닭파닭 첫째 줄에 승균이가 시장에서 사 온 파의 개수 S(1 ≤ S ≤ 1,000,000), 그리고 주문받은 파닭의 수 C(1 ≤ C ≤ 1,000,000)가 입력된다. 파의 개수는 항상 파닭의 수를 넘지 않는다. (S ≤ C) 그 후, S 줄에 www.acmicpc.net [문제 해석] 이 문제는 이분 탐색 문제로, 최소값과 최대값을 고려하면서 적절한 값을 찾아가는 문제이다. 이 문제에서 주의할 점은 라면에 넣을 파의 양이라는 점이다. [소스코드] S, C = map(int, input().split()) pa = [] for _ in range(S) : pa.append(int(input())) start, end =..
https://www.acmicpc.net/problem/19951 19951번: 태상이의 훈련소 생활 2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연 www.acmicpc.net 문제 분석 배열에서 일정 범위 a~b에 정수 k를 더하는 명령을 여러 번 수행하는 문제입니다. 단순히 매 명령마다 배열에서 a~b까지 k를 더하도록 구현하면 시간복잡도가 O(NM)이 되어 시간 안에 문제를 풀 수 없습니다. 더 좋은 방법은, 명령의 범위 a, b와 더할 숫자 k를 기록하는 배열을 만들고, 누적합을 이용하여 원래 배열에 더해주는 것입니다. 이렇게 구현하면 시간복잡도는 ..
1874번: 스택 수열 (acmicpc.net) 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 분석 스택 구조로 자료를 저장하여 다시 꺼낸 수로 수열을 만들때 필요한 연산을 계산하는 문제이다. 소스 코드 n=int(input()) arr=[] for i in range(n): a=int(input()) arr.append(a) stack=[] s=[] c=[] t=1 for i in range(2*n): if stack=..
백준 1644 소수의 연속합 Intro Solution 입력되는 수보다 작은 소수들을 합하여 입력된 수를 만들어야 하고, 해당 소수들은 연속된다. 먼저 에라토스테네스의 체를 이용하여 입력 이하의 소수의 목록을 만든다. 소수 목록의 누적 합 리스트를 만든다. 투 포인터(l, r)를 이용해 포인터를 뒤로 옮겨가며 답을 구한다. 3.1. 포인터 l부터 포인터 r까지의 소수의 합이 n과 동일할 때 정답으로 출력할 변수에 1을 더한다. 3.2. 소수의 합이 n보다 작으면 오른쪽 포인터를 한 칸 이동한다. 3.3. 소수의 합이 n보다 크거나 같으면 왼쪽 포인터를 한 칸 이동한다. Code def primes(n): # 에라토스테네스의 체 if n < 2: return [0] is_prime = [True] * (n..
https://www.acmicpc.net/problem/3181 3181번: 줄임말 만들기 꿍은 만사가 귀찮아서 말을 하기도 귀찮아 한다. 그래서 하려는 말을 대신해줄 줄임말을 만들려고 하는데 나름 규칙을 만들었다. 하려는 말은 최소 하나 이상의 단어를 포함하는데 각 단어들은 www.acmicpc.net 문제분석 'i', 'pa', 'te', 'ni', 'niti', 'a', 'ali', 'nego', 'no', 'ili' 의 문자열이 입력값에 있으면 출력 시 앞글자를 따오면 안된다. 소스코드 a = input().split() li1 = ['i', 'pa', 'te', 'ni', 'niti', 'a', 'ali', 'nego', 'no', 'ili'] r = a[0][0] for i in range(..
14503번: 로봇 청소기 (acmicpc.net) 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 해석 NxM 크기의 직사각형 안에 있는 로봇청소기가 청소한 칸의 개수를 구하는 문제이다. 청소기는 특정 알고리즘에 따라 움직이므로 해당 알고리즘을 그대로 구현하여 시뮬레이션 해야한다. 코드 문제 풀이 처음 변수 선언 부분부터 설명하자면 arr는 NxM의 직사각형이 들어갈 list이고 0은 빈칸, 1은 벽, 2는 이미 청소한 칸을 나타낸다. flag는 로봇청소기가 해야할 알고리즘 단계를 나타내며 0은 문제의..
코드 print("FA") 풀이 이 문제의 재미있는 점은 사실 모든 자연수는 FA라는 것으로 귀결된다는 점이다. 두 자리 이상의 자연수는 함수를 거듭할수록 작아지고, 한자리수가 되면 그 결과값이 바뀌지 않으므로 모든 자연수는 FA가 된다. 이 부분을 이용하여 어떤 입력이 들어오든 단순히 'FA'를 출력하는 코드를 작성하였다.
KauKoala
Koala