Vector9 BOJ 백준 11557 c++ YangJoJang of the Year. (vector pair 제한시간 1초. 학교 숫자 최대 100개 & 각 학교 최대 20개. 이중 for 문을 써도 제한시간에 문제가 없다,. 이러한 문제에서는 vector pair을 이용하면 어떨까요? 간단하게 pair는 뭐냐면, 두 데이터를 하나로 묶는거에요. 자동차와 차키의 관계처럼. 그러면! 학교 이름과 그 학교가 얼마나 술을 마셨는지를 엮어서 벡터에 차곡차곡 쌓고 술 마신 양으로 sorting해서 해당 학교를 찾아낼 수 있지요, vector vv; vv라고 선언을 해주고! vv.push_back(make_pair(a,b)); 이렇게 차곡차곡 make_pair()로 값을 묶어서 벡터에 집어넣으면 돼요! 자 하나 고려할게,, 벡터에 넣었고? 그담에 pair중 b위치에 해당하는 값으로 sorting하는데 어떻게 하냐?? 함수.. 2023. 8. 20. 백준 25206 너의 평점은 c++ https://www.acmicpc.net/problem/25206 25206번: 너의 평점은 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치 www.acmicpc.net 이번 문제는 문자열을 쪼개서 필요한 정보만 추출해서 계산하는 문제입니다. 공백이 있는 문자열은 getline()을 이용해서 받을 수 있는데, 받은걸 쪼개서 사용하면 됩니다. 여러 방법이 있겠지만 저는 vector를 이중으로 사용해볼겁니다. 먼저. 얘네를 전부 vector에 받는게 좋겠죠!? 어차피 쪼갤거 함수를 이용해봅니다. 네, split 이라는 함수를 만들었는데요, 이는 받아들인 문자열을 3등분으로.. 2023. 4. 19. c++ 백준 바구니뒤집기 10811 구간 정렬이다.어떻게 할까요? 전체정렬이면 sort()를 써서 쉽게 할 수 있는데요.. 그렇다면 구간을 전체로 생각한다면..? 벡터에 구간에있는 값들을 넣습니다! 그리고 바구니는 넣어진 순서대로 역순으로 재 정렬해야하는데요.. 이게 몇번 반복하면 바구니 값은 애초에 순서대로 되어있지 않아요. 그 래 서 pair을 이용하는것입니다. 이렇게 구간을 j, k로 받고 이 구간안에 있는 실제 값인 a[l]을 벡터에 pair로 놓아요.(pair로 놓는 이유는 21번줄에 넣을때 순서를 first값에 넣기위해! 굳이 0부터 할 필요없이 l은 증가하니까 저렇게 넣었습니다.) 그상태로 24번줄에서 내림차순 정렬을 하면? 그대로 해당되는 a배열에 차근차근 집어넣으면 됩니다! 약간 어떤느낌이냐면 구간만큼 따로빼서 뒤집고 다시.. 2023. 3. 12. 백준 18870 좌표압축 c++ (이분탐색, sort,unique,erase) 주어진 문제는 1초를 시간제한으로 두고 있다. 즉 1억번의 연산 10^8번 이내로 끝내야하는데 주어진 입력의 최대치는 10 ^ 6이다. 그렇다면 시간안에 하기위해 어떤 알고리즘을 써야할까? 우선 이 문제를 어떻게 풀지 고민해봤을때 1. Counting Sort?? 시간복잡도는 O(N)이므로 문제는 없지만 input값이 음수임으로 번거로울거같다. 2. 이분탐색? 이분탐색을 어떻게 활용하느냐가 관건인데,, 만약 input값을 오름차순으로 정렬을 해놨다면 해당 인풋마다 정렬된 배열의 인덱스가 답이 될것이다. 단 중복된건 하나로 쳐야하겠다.(ex. 예제입력1에서 2 4 -10 4 -9를 오름차순으로 중복없이 -10 -9 2 4 로 따로 보관해놓는다면 2가 들어간 인덱스는 2, 4는 3, -10은 0, 4는 3,.. 2023. 2. 14. 백준 25305 커트라인 c++ (vector) 시간제한에 자유로운 문제이다. 정렬을 해야하는데 vector와 algorithm을 써서 sort를 하는게 편하겠다!~ vector안의 값들을 sort로 정렬하고싶을떄 #include 을 쓰면되고 내림차순을 원한다면 위의 사진처럼 begin과 end 앞에 r 을 붙이면 된다. 2023. 2. 14. 수열 2559 c++ queue,vector,sort 시간초과에 걸렸던 문제였다. 처음 접근 vector a에 다 받아놓고 vector sum에 합을 넣어놓는다. -> 이중 for문을 써서 for(int i = 0; i < n - k; i ++){ arrsum = 0; for(int j = i; j < i + k; j++){ arrsum += a[i]; } sum.push_back(arrsum); } 이러고 밑에서 sort(sum.rbegin(), sum.rend()); 하고 sum[0] 을 출력하면 된다 그런데 시간초과!!!! 이유는? 이중배열.. 그럼 이중배열을 안쓰며 한큐에 해결할수 있는건? 바로바로 큐 를 이용하는것이다. 큐의 크기가 k 가 되기전까진 넣기만 하고 k일때부터 그들의 합을(합은 애초에 넣을때부터 누적해야한다 arrsum) vec.. 2023. 1. 8. 이전 1 2 다음