728x90

프로그래밍 410

백준] 1735 - 분수 합

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. 출력첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다. 소스코드 #include using namespace std; int gcd(int a, int b) { if (b == 0) return a; else gcd(b, a%b); } int main(void) { int a1, a2, b1, b2, lcm, sum, ki; cin >> a1 >> a2; cin >> b1 >> b2; if (a2 > b2) lcm = gcd(a2, b2); else l..

백준] 5545 - 최고의 피자(JOI 2012 예선)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 토핑의 종류의 수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 도우의 가격 A와 토핑의 가격 B가 주어진다. (1 ≤ A, B ≤ 1000) 셋째 줄에는 도우의 열량 C가 주어진다. (1 ≤ C ≤ 10000) 다음 줄부터 N개 줄에는 각 토핑의 열량 Di가 한 줄에 하나씩 주어진다. (1 ≤ Di ≤ 10000) 출력첫째 줄에 최고의 피자의 1달러 당 열량을 출력한다. 소수점 이하는 버리고 정수 값으로 출력한다. 소스코드 #include #include #include using namespace std; int main(void) { int n, a, b, c, d[100], sum, toping, bil; double max = 0;..

백준] 3003 - 킹, 퀸, 룩, 비숍, 나이트, 폰

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. 출력첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다. 소스코드 #include using namespace std; int main(void) { int arr[6] = { 1,1,2,2,2,8 }, input[6]; for (int i = 0; i > input[i]; for (int i = 0; i < 6; i++) cout

백준] 4641 - Doubles(ACM-ICPC Regional)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 여러 개의 테스트 케이스로 주어져 있으며, 입력의 끝에는 -1이 하나 주어진다.각 테스트 케이스는 한 줄로 이루어져 있으며, 2~15개의 서로 다른 자연수가 주어진다. 각 자연수는 100보다 작으며, 리스트의 끝은 0으로 판별한다(0은 리스트에 속하지 않는다). 출력각 테스트 케이스마다 한 줄에 걸쳐 정답을 출력한다. 소스코드 #include #include using namespace std; int main(void) { vector arr; int tmp, cnt = 0, size; while (1) { cin >> tmp; if (tmp == -1) break; else if (tmp == 0) { size = arr.size(); for (..

백준] 13458 - 시험 감독

시간 제한 : 2초메모리 제한 : 512MB 입력첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) 출력각 시험장마다 응시생을 모두 감독하기 위해 필요한 감독관의 최소 수를 출력한다. 소스코드 #include #include using namespace std; int main(void) { long long n, b, c, bCnt = 0, cCnt = 0; cin >> n; vector arr(n); for (int i = 0; i > arr[i]; cin >> b >> c; for ..

백준] 1350 - 진짜 공간

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 파일의 개수 N이 주어진다. N은 1,000보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌 정수이다. 마지막 줄에는 클러스터의 크기가 주어진다. 이 값은 1,048,576보다 작거나 같은 자연수이다. 출력첫째 줄에 사용한 디스크 공간을 출력한다. 소스코드 #include using namespace std; int main(void) { int n, arr[1000], clusterSize; long long cluster = 0; cin >> n; for (int i = 0; i > arr[i]; cin >..

C++ STL list의 기본적인 사용법 정리

C++로 알고리즘 문제를 풀다 보면 STL을 자주 사용한다. 다양한 방식으로 자료를 다루는 스택, 큐, 링크드 리스트 등을 직접 구현하지 않아도 최적화된 환경에서 잘 이용해먹을 수 있게 해주는 도구로, 이번 포스트에서는 STL에서 list에 대해 간단하게 다뤄볼까 한다. 사실, 다룬다는 개념보다는 정리한다는 측면이 더 강할 것이다. list는 순차적인 컨테이너로, 메모리 할당은 연속적으로 이루어지지 않는다. vector와 비교했을 때, 랜덤 접근이나 탐색 측면에서는 vector가 더 좋은 성능을 보이지만, 특정 위치를 정해둔 상태에서 삽입이나 삭제가 이루어질 경우에는 vector에 비해 빠르다는 장점을 가지고 있다. 종합적으로 볼 때, list는 중간 데이터 삭제와 삽입이 자주 발생하면서, 순차적으로 저..

728x90