티스토리 뷰
문제
문제는 해석도 크게 어렵지 않다. 처음에 N이 주어지고 다음에 N개의 가격들이 주어진다. 그 다음 라인에 갖고있는 돈 M이 주어지는데, 갖고있는 돈 M으로 딱 맞춰서 살 수 있는 책 두 쌍의 가격 pair를 반환하는 것이다.
스티븐 할림의 competitive algorithm책에서는 이진탐색풀이-input을 받고 정렬해서 각 원소 p[i]에 대해 M-p[i]를 이진탐색으로 찾기-를 제시했지만 이러면 시간복잡도가 nlgn+nlgn = 2nlgn이 나오는데, sorting 외의 nlgn작업은 예전에 풀었던 문제를 참고하면 n안에 수행할 수 있다. (UVa-10487의 아이디어 참고하기:https://hezma.tistory.com/56)
다음은 그 코드다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef vector<int> vi;
typedef pair<int, int> ii;
int main() {
int N, M, temp,sum;
/*--------------inputpart_start-------------*/
while (cin >> N && !cin.eof()) {
vi input;
ii solution;
for (int i = 0; i < N; i++) {
cin >> temp;
input.push_back(temp);
}
cin >> M;
/*--------------inputpart_end-------------*/
sort(input.begin(), input.end());
vi::iterator frontit = input.begin();
vi::iterator endit = --input.end();
while (frontit!=endit) {
sum = *frontit + *endit;
if (sum < M) {
++frontit;
}
else if (sum > M){
--endit;
}
else { //sum == M
solution = make_pair(*frontit, *endit);
++frontit;
}
}
cout << "Peter should buy books whose prices are " << solution.first << " and " << solution.second << "." <<endl<<endl;
}
return 0;
}
'기초 알고리즘 문제 풀이' 카테고리의 다른 글
# 파이썬 객체 특성과 깊은 복사. 문풀시 기억하기. (2) | 2020.08.18 |
---|---|
43. Reverse-Linked list & 파이썬의 다중할당 (0) | 2020.08.14 |
41. UVa-10567 //Binary Search (0) | 2020.03.04 |
40. UVa-10576 Y2K Accounting Bug (0) | 2020.03.03 |
39. UVa-01047 Zones, <TLE> (0) | 2020.03.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- NLP
- 이산 신호
- CNN
- 밑바닥부터 시작하는 딥러닝
- 인덱스 이미지
- ML
- 자연어 처리
- 매트랩 함수
- 이미지
- 컴퓨터과학
- Logistic Regression
- 사진구조
- 연속 신호
- CS
- 머신 러닝
- RGB이미지
- Andrew ng
- rnn
- 매트랩
- 이미지처리
- 머신러닝
- 딥러닝
- gradient descent
- Neural Network
- 영상구조
- 순환 신경망
- 컴퓨터 과학
- 신호 및 시스템
- 신경망
- 영상처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함