Koala - 11기

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 알고리즘 분류 수학 브루트포스 알고리즘 조합론 백트래킹 문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 ..
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net N개의 정수가 있는 집합 A, M개의 정수가 있는 집합 B 존재 -> B의 요소들이 A에 포함되는지 확인 - 이분탐색 1. 집합 N 정렬 2. 시작과 끝 지점의 인덱스 지정 3. 시작 + 끝 // 2 구하기 4. 중간 지점의 값과 해당 값 비교 -> 동일하면 찾은 것 / 값이 크면 윗부분 탐색 / 값이 작으면 아랫부분 탐색 => 반복 5. 만일, 확..
알고리즘 분류 구현 문자열 문제 동혁이는 NBA 농구 경기를 즐겨 본다. 동혁이는 골이 들어갈 때 마다 골이 들어간 시간과 팀을 적는 이상한 취미를 가지고 있다. 농구 경기는 정확히 48분동안 진행된다. 각 팀이 몇 분동안 이기고 있었는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 골이 들어간 횟수 N(10: t1=t1-(48*60-(60*m+s)) print('{:0>2}:{:0>2}'.format(t1//60,t1%60)) print('{:0>2}:{:0>2}'.format(t2//60,t2%60))
문제 https://www.acmicpc.net/problem/16507 16507번: 어두운 건 무서워 첫 번째 줄에는 사진의 크기를 의미하는 정수 R, C (1 ≤ R, C ≤ 1,000)와 사진 일부분의 밝기 평균을 알아볼 개수를 의미하는 정수 Q (1 ≤ Q ≤ 10,000)가 주어진다. 다음 R개의 줄에 걸쳐 R×C 크기의 사 www.acmicpc.net 풀이 누적 합을 저장하기 위해 새로운 2차원 배열(ps)을 만들어 준다. 이중 반복문을 이용하여 누적합을 저장한다. ps[i][j] = ps[i][j-1] + ps[i-1][j] - ps[i-1][j-1] + li[i-1][j-1] 입력받은 좌표에 해당하는 밝기의 합을 구한다. ps[x2][y2] - ps[x2][y1-1] - ps[x1-1][..
https://www.acmicpc.net/problem/23827 23827번: 수열 (Easy) 모든 원소가 양의 정수이고, 길이가 $N$인 수열 $A_1, A_2, ..., A_N$이 주어진다. $1 \le i < j \le N$을 만족하는 모든 정수쌍 $(i, j)$에 대해 $A_i \times A_j$의 합을 $1\, 000 \, 000 \, 007$로 나눈 나머지를 구하시 www.acmicpc.net # 문제 설명 - 모든 원소가 양의 정수이고, 길이가 N인 수열 A1, A2, ... , AN이 주어진다. 1
Problem https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net Code import sys input = sys.stdin.readline n = int(input()) arr = list(map(int, input().split())) m = int(input()) prefix_sum=0 for i in arr: prefix_sum+=i if prefix_sum
문제 코드 arr = list(input().split()) arr1 = [] for i in arr: if i == 'i' or i == 'pa' or i == 'te' or i == 'ni' or i == 'niti' or i == 'a' or i == 'ali' or i == 'nego' or i == 'no' or i == 'ili': if i == arr[0]: arr1.append(i) else: continue else: arr1.append(i) ans = [] for i in range(len(arr2)): ans.append(arr1[i][0].upper()) print(''.join(ans)) 해설 입력되는 글자를 공백에 따라 arr이라는 리스트에 저장한다. 'i', 'pa', 'te..
문제 풀이 2차원 배열의 누적 합을 구하는 문제다. 입력을 받으면서 누적 합을 만들었고, i 또는 j의 인덱스가 0인 곳엔 0을 채워 넣었다. 큰 네모(arr[x2][y2]에서 가장자리에 해당하는 두 네모(arr[x2][y1 - 1], arr[x1 - 1][y2])를 빼주고, 작은 네모(arr[x1 - 1][y1 - 1]는 두번 빠졌기에 한번 더해줬다. 코드 #include #include using namespace std; int N, M; int arr[1025][1025]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // 표의 크기 N, 합을 구하는 횟수 M cin >> N >> M; // 입력 & 누..
https://www.acmicpc.net/problem/16713 16713번: Generic Queries 첫째 줄에는 $N, Q$가 공백을 사이에 두고 주어진다. ($1 \le N \le 10^6$, $1 \le Q \le 3 \cdot 10^6$) 둘째 줄에는 $a_1, a_2, \cdots a_N$이 공백을 사이에 두고 주어진다. ($0 \le a_i \le 10^9$) 그 후, $Q$개의 줄에 걸 www.acmicpc.net 1. 문제풀이 누적합 문제를 XOR 연산을 적용하여 만든 문제이다. XOR 연산은 교환법칙과 결합법칙이 성립한다. 양수 A가 있을 때 XOR 연산은 다음이 성립한다. 1. A XOR 0 = A (0은 항등원) 2. A XOR A = 0 (A는 역원) 위 식이 성립할 때, ..
16401번: 과자 나눠주기 (acmicpc.net) 16401번: 과자 나눠주기 첫째 줄에 조카의 수 M (1 ≤ M ≤ 1,000,000), 과자의 수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 과자 N개의 길이 L1, L2, ..., LN이 공백으로 구분되어 주어진다. 과자의 길이는 (1 ≤ L1, L2, ..., LN ≤ 1, www.acmicpc.net 문제 코드 m,n=map(int,input().split()) l=sorted(list(map(int,input().split()))) if m> sum(l): x=0 else: left=1 right=l[-1] while left=m: x=mid left=mid+1 else: right=mid-1 print(x) 코드 해석 ..
문제: 10773번: 제로 (acmicpc.net) 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 코드 코드 설명 위 문제는 스택을 이용하여 풀 수 있는 문제로, 스택에 저장할 정수가 0에서 1,000,000 사이의 값을 가지므로 long long형을 가지는 스택을 써주었다. 0이 입력이 된다면, 가장 최근에 입력된 수를 삭제해주는 처리를 해주면 되기 때문에, for문으로 반복하는 동안 0이 아닌 수가 입력이 되면 push를 이용해 스택에 쌓아 주었고 만약에 0이 입력이 되면..
Problem Solution N과 M을 입력 받고 N개의 정수로 이루어진 수열 A를 입력 받는다. 누적 합 배열인 prefixSum을 초기화 하고 두 개의 반복문을 사용해 모든 부분합을 구한다. 첫 번째 반복문에서는 구간의 시작 위치 start를 1부터 N까지 순회한다. 두 번째 반복문에서는 구간의 끝 위치 end를 start부터 N까지 순회한다. 모든 가능한 구간 합을 확인한 후 누적 합 배열을 이용하여 구간 합을 계산 한다. prefixSum[end] - prefixSum[start - 1]을 통해 수열 A의 start부터 end까지의 합을 구하고 이 합이 M과 같다면 경우의 수를 증가시킨다. 모든 구간에 대해 경우의 수를 구하고 이를 출력한다. Answer #include #include usin..
KauKoala
'Koala - 11기' 카테고리의 글 목록 (6 Page)