07 Jul 2021
패션왕 신해빈…해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다…각 테스트 케이스에 대해 해빈이가 알몸이 아닌 상태로 의상을 입을 수 있는 경우를 출력하시오… 거참 문제 한번 상황이 웃기네…
/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#include <utility>
using namespace std;
int fact(int n) {
int i,j;
if(n==1) return n;
else {
i = n;
for(j=n-1; j>0; j--) i *= j;
return i;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
if (n<0 || n>30) return 0;
vector<pair<string, string>> fashion;
for (int i=0; i<n; i++) {
int num;
cin >> num;
for (int j=0; j<num; j++) {
string a,b;
scanf("%s %s", a,b);
// fashion.push_back(input);
pair<string, string> last = *(fashion.end());
if (!last.second.compare(b)) {
pair<string, string> input = make_pair(a,b);
fashion.push_back(input);
}
if(j==num-1) {
int size = fashion.size();
cout << size << "\n";
cout << fact(size) << "\n";
}
fashion.clear();
}
}
}
이상하게 오늘 vscode가 느리고 버벅거린다… 터미널도 맛탱이가 나갔다… 그래서 gdb online을 썼더니 더 느리고 복잡하다…. 머리 아파….. 얼른 자야겠다…
06 Jul 2021
정답률이 무려 70%가 넘는 분할정복 문제! 사실 난 쉽지 않았는데 왜 이렇게 다들 잘 하는거야…. 😨😨
#include <iostream>
using namespace std;
int map[129][129] = {0};
int white, blue = 0;
void solve(int x, int y, int size) {
int check = map[x][y];
for (int i=x; i<x+size; i++)
for (int j=y; j<y+size; j++) {
if (check == 0 && map[i][j] == 1) check = 2;
if (check == 1 && map[i][j] == 0) check = 2;
if (check == 2) {
solve(x, y, size/2);
solve(x, y+size/2, size/2);
solve(x+size/2, y, size/2);
solve(x+size/2, y+size/2, size/2);
return;
}
}
if (check == 0) white+=1;
if (check == 1) blue +=1;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int N; cin >> N;
if (N!=2 && N!=4 && N!=8 && N!=16 && N!=32 && N!=64 && N!=128) return 0;
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
cin >> map[i][j];
solve(0, 0, N);
cout << white << "\n" << blue << "\n";
}

해커톤 준비하고 pr, 커밋, 브랜치 망치는 바람에 허버허버 헤매다가 겨우 끝내고 한시반이 되어서야 시작….. 내일 또 출근이라 일찍 일어나야해서…… 정답률 높은 문제로 골라서 풀었다
05 Jul 2021
아주 아주 간단한 스택 문제… 스택의 개념을 묻는 질문이다! stack 라이브러리를 처음 써보는데, pop()의 return 값이 내가 기존에 구현하던 int가 아니라 void여서 top()을 잘 활용했다
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int K;
cin >> K;
if (K<0 || K>100000) return 0;
stack<int> s;
for (int i=0; i<K; i++) {
int num;
cin >> num;
if (num==0) s.pop();
else s.push(num);
}
int sum = 0;
if (s.empty()) cout << 0 << "\n";
else {
while(!s.empty()) {
int pop = s.top();
sum += pop;
s.pop();
}
cout << sum << "\n";
}
}

사실 오늘도 풀던 dp 문제가 있었는데, 문제를 잘못 이해해서 30분 허비(?)했다… 그러고서는 시간이 너무 늦어서 내일 출근을 위해 다른 쉬운 문제로 갈아탔다… 내일은 꼭 풀어낼거다!! 오늘 할게 진짜 많은데 그냥 자야겠다………..

03 Jul 2021
아주아주 간단한 ATM 문제! 그리디 알고리즘을 이용하는 것인데, 다음번엔 라이브러리 없이 sort함수도 직접 구현해봐야겠다…
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cout.tie(NULL); cin.tie(NULL);
int N;
vector<int> P;
cin >> N;
if (N<0 || N>1000) return 0;
for (int i=0; i<N; i++) {
int num;
cin >> num;
if (num<0 || num>1000) return 0;
P.push_back(num);
}
sort(P.begin(), P.end());
int sum = 0; int result = sum;
for (auto it=P.begin(); it!=P.end(); ++it) {
sum = *it + sum;
result = sum + result;
}
cout << result << endl;
return 0;
}

캠핑 왔는데 노트북 들고 와서 하는 것…그리고 나름 벙갈로 안에서 하는 연습 그러기엔 너무 간단했지만 과 오늘 마감이었던 기세 과제 두개를 다!! 끝낸 것에 의의를 둔다…..!! 화이팅…
02 Jul 2021
Dynamic Programming의 기본 원리로 푸는 문제… 처음에 다소 당황했지만 2d array로 접근하는 방식을 이해하면 쉽게 풀 수 있다
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 1000
int house[MAX][3];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int N;
cin >> N;
int cost[3];
if (N<1 || N>1000) return 0;
for (int i=0; i<N; i++) {
cin >> cost[0] >> cost[1] >> cost[2];
house[i+1][0] = min(house[i][1],house[i][2])+cost[0];
house[i+1][1] = min(house[i][0],house[i][2])+cost[1];
house[i+1][2] = min(house[i][1],house[i][0])+cost[2];
}
cout << min(house[N][2],min(house[N][0],house[N][1]));
}
