코딩테스트 128
-
문제 풀이#include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int n = 0; queue q; cin >> n; // 큐 채우기 for (int i = 1; i 1) { // 우선 제일 위에 있는 카드를 버린다. q.pop(); // 제일 위에 있는 카드를 제일 아래로 옮긴다. (push 한뒤 pop) q.push(q.front()); q.pop(); } cout 풀이문제 속 요구사항을 순서대로 구현하면 되는 간단한 문제다. 제일 먼저 넣은 카드가 먼저 나가기 때문에 큐를 사용해서 풀 수 있다. 1. 우선 큐를 순서대로 채운 뒤,2. N만큼 반복하면서3. 제일 위에 있..
-
문제 풀이#include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(0); int n = 0; cin >> n; for (int y = 1; y 메모예제 입출력 부분을 살펴보면 세로에 해당하는 y 값은 1씩 증가하며 가로에 해당하는 x의 경우 i번째 줄에서 공백의 개수는 N - i개가 되고, 별의 개수는 2 * i - 1개가 된다.따라서 입력받은 n까지 y값을 하나씩 증가시키면서 내부에서 2개의 for문을 따로 돌려서 각각 공백과 별을 출력하도록 한다. 입력받은 N을 기준으로 공백과 별을 출력하며 이때 개수는 N에 비례하기 때문에 이 코드의 전체 시간 복잡도는 O(n^2)가 된다.다만 입력 부분..
-
-
-
-
문제 풀이입력받은 값을 배열에 쭉 저장한 뒤, 두 값이 합쳐졌을 때 x가 되는 경우를 판단해야 하는 문제이다. 뭔가 답이 알듯말듯해서 혼자 고민하다가 다른 분의 풀이(https://github.com/encrypted-def/basic-algo-lecture/blob/master/0x03/solutions/3273.cpp) 를 참고했다. 이미 너무 깔끔한 코드인데 개인적으로 조건문 내부에서 사칙연산을 그대로 넣는 걸 좋아하지 않아서 value 변수로 따로 빼주었다. #include using namespace std;int a[1000001] = {};bool occur[2000001];int n, x;int main(void) { ios::sync_with_stdio(0); cin.tie(0..
-
문제 풀이#include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); string n = ""; int arr[10] = { 0, }; cin >> n; for (char c : n) { arr[c - '0']++; } arr[6] = (arr[6] + arr[9] + 1) / 2; int max = 0; for (int i = 0; i 문제를 읽어보면서 2가지를 떠올렸다. 1. 입력받은 값중에 가장 많이 등장한 값의 수가 필요한 세트의 수가 된다.2. 6과 9는 서로 호환가능하기 때문에 한 세트에 2개까지 사용할 수 있다. 이를 따로 처리해주어야 한다. 따라서 우선 string으로 값을 받아서, 배열의 인덱스를 입..
-