2022 KAKAO BLIND RECRUITMENT 문제가 길다간단히 하면fees라는 배열에 기본시간, 기본요금, 단위시간, 단위요금이 int로 주어지고records라는 배열에 입력된 시간, 차량 번호, 입차/출차 가 string으로 주어진다 이를 통해서 차량의 총 누적 시간에 따른 주차요금을 계산하여 배열로 반환하면 되는 문제 #include #include #include #include #include using namespace std;int Calculate(int bT, int bF, int pT, int pTF, int tT){ int fee = 0; //요금계산 if (tT bT) //기본시간 초과 { fee += bF; tT -= bT; fee += tT / pT * pTF; ..
이렇게 주어진 값들을 카테고리 안에 넣어야하는 문제들이 있다이런 문제들은 보통 해당 카테고리에 무엇이 들었는가는 중요치 않다그 카테고리에 몇 가지가 들었는지 숫자가 중요할 뿐 따라서 map 를 선언하고 key값에는 유일한 카테고리명을,value는 int형으로 key값이 나올 때마다 +1씩 더해주어 몇가지가 있는지를 알아낸다 그 후에는 간단하다해당 카테고리에서 하나만 고르거나 안고르거나.(한 카테고리에서 두 개를 고르는건 제한사항이다) 따라서 map의 (value값 +1)을 모두 곱해주면 된다 그리고 모두 안골랐을 경우를 하나 빼주면 끝 ! #include#include #include #include using namespace std;int solution(vector> clothes){ map ..
처음에는 enemy[i]의 합이 n보다 작으면 병사를 소모하고크다면 무적권을 소모하도록그냥 순서대로 소모되도록 했었다 이렇게 하면 예제도 잘 되고 다 되는줄 알았는데 엄청 많이 틀렸다 반례를 생각해본 결과 n = 10, k = 2, enemy = [3, 7,10, 2, 5, 10]일 경우에 내가 짠 대로 하면 3, 7에서 병사를 소모하고 10, 2에서 무적권을 사용하여 4번만에 종료된다하지만 사실 3에서 병사 소모, 7, 10에서 무적권을 소모하고 2, 5에서 병사를 다시 소모한다면 5번째 라운드까지 진행할 수 있다. 여기서 어떻게 해결을 해야할까 고민했다조건문으로는 도저히 식이 구현되지 않고... 따라서 하나의 배열같은 것을 따로 만들어서 거기서 뭔가를 해야겠다 !라고 생각하게 되었다 그래서 생각해낸것..
https://www.acmicpc.net/problem/24511 24511번: queuestack첫째 줄에 queuestack을 구성하는 자료구조의 개수 $N$이 주어진다. ($1 \leq N \leq 100\,000$) 둘째 줄에 길이 $N$의 수열 $A$가 주어진다. $i$번 자료구조가 큐라면 $A_i = 0$, 스택이라면 $A_i = 1$이다. 셋째 줄www.acmicpc.net 말이 너무 길어서 처음에 이해하는데 시간이 좀 걸렸다 그런데 차근차근 그림으로 그려가며 이해를 해보면사실 큐와 스택의 구조를 가지고 있다고는 하지만스택 특성상 삽입된 원소가 가장 먼저 pop되는 형식이다따라서 스택의 경우엔 여기서는 그냥 지나쳐가는 필요 없는 원소라는 뜻이다결과적으로 큐인 자료구조일 경우에만 계산..
https://www.acmicpc.net/problem/28279 28279번: 덱 2첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.www.acmicpc.net #includeusing namespace std;#define MAX 1000000int deq[MAX * 2];int head = MAX - 1;int tail = MAX;int vSize = 0;int Empty(){//6 if ((tail - head - 1) == 0) return 1; else return 0;}void PushFront(int x){//1 deq[head--] = x;}void Push..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0www.acmicpc.net 일단 그냥 전체를 도는 반복문으로 출력을 해봤다#include#include using namespace std;int main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; int numN; vector ns; for (int i = 0; i ..
https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는www.acmicpc.net #include#include using namespace std;int main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; string name; string record; map> records; for (int i = 0; i > na..
#include#include using namespace std;vector Wines;vector Maxs;int Compare(int a, int b){ //a와 b중 큰 값을 반환 return a > b ? a : b;}int Dynamic(){ int drinkNow = 0; int notDrinkNow = 0; int drinkedPrev = 0; int notDrinkedPrev = 0; for (int i = 3; i > n; for (int i = 0; i > amount; Wines.push_back(amount); } cout
풀이 #include#includeusing namespace std;int main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; string A, B; map dancing; for (int i = 0; i > A >> B; if (A == "ChongChong") dancing.insert(make_pair(A, true)); if (B == "ChongChong") dancing.insert(make_pair(B, true)); if (dancing[A] == t..