전체 글 111

g++ 환경변수 설정하기 (mac m1)

맥에서 제공해주는 기본 c언어 compiler가 clang이라고 있는 거 같은데, vector a = {1, 2, 3, 4, 5} 과 같은 방식으로 vector를 초기화하는 것을 여기서는 지원해주지 않는다. 답답해서 g++ compiler를 설치해야겠다고 다짐했다. 다음 명령어로 homebrew에서 gcc를 다운받았다. brew install gcc 그리고 g++ version을 확인해봤는데, 왜인지 안 바뀌어 있다. 알아보니 g++이 usr/local/bin에도 하나 있고, usr/bin에도 하나 있었다. 내가 homebrew에서 깐 놈은 usr/local/bin에 들어가 있었는데, usr/bin에 있는 놈만 실행시키는 것이었다. 그래서 환경변수 설정을 해줘야했다. 난 왠지 bash_profile에서 ..

[종만북] - 쿼드 트리 뒤집기(분할정복)

문제 접근방법 iterator를 쓰기 때문에, 함수가 하나 끝나고 나서도 자연스럽게 it변수를 그대로 받아 쓸 수 있다. it은 마지막으로 끝난 함수에서 검사한 위치 다음을 가리킨다. 코드 , #include #include #include using namespace std; #define FOR(i, n) for (int i=0;i> C; while(C--) { string quadtree; cin >> quadtree; string::iterator it = quadtree.begin(); string answer = reverse(it); cout

[종만북] - 게임판 덮기(완전탐색)

문제 접근방법 재귀함수를 이용한 완점탐색이다. 순서를 강제하여 중복으로 세는 문제를 해결한다. 코드 #include #include #define FOR(i,n) for (int i=0;i> C; while (C--) { int cnt = 0; int answer = 0; cin >> h >> w; board = vector(h, vector(w, 0)); FOR(i,h) FOR(j,w) { char temp; cin >> temp; if (temp == '#') board[i][j] = 1; else { board[i][j] = 0; cnt++; } } if (cnt == 0) answer = 1; else if (cnt % 3 == 0) answer = cover(board); cout 1) ok =..

[종만북] - 소풍(완전탐색)

해결과정 완전탐색할 때 가장 주의해야할 점은 중복으로 세는 문제이다. 아래 예시는 중복으로 세고 있는 경우이다. int n; bool areFriends[10][10]; //taken[i] = i번째 학생이 짝을 이미 찾았으면 true, 아니면 false int coutPairings(bool taken[10]) { //기저사례 : 모든 학생이 짝을 찾았으면 한 가지 방법을 찾았으니 종료한다. bool finished = true; for (int i=0;i

[프로그래머스 LV4] - 징검다리(이분탐색) C++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43236 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 이분탐색은 보통 정렬되어 있는 숫자를 이용한다. 이분탐색을 이용해 찾아야할 값은 뭘까? distance의 범위가 100,000,000까지였기 때문에, distance를 가지고 이분탐색을 해야한다는 직감이 들었지만, 이분탐색으로 뭘 찾아야할 지, left와 right로 이동하는 기준이 뭐가 되야하는 지 알지 못했다. 결과적으로 여기서 이분탐색을 이용해 찾아야하는 숫자는 거리의 최솟값 ..

middleware란?

middleware란? 미들웨어는 양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어, 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해 주는 소프트웨어를 말한다. 3계층 클라이언트/서버 구조에서 미들웨어가 존재한다. 웹 브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있게 중간에 미들웨어가 존재하게 된다. 예를 들어 json or jdbc등을 생각할 수 있다. json은 서로 다른 프로그램이 통신할 수 있도록 메시지 프레임워크를 제공한다. jdbc는 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있도록 한다.

[DataBase] - Superkey, Candidate key, Primary key

쉽게 말하면, R을 결정할 수 있으면, superkey superkey중에서 부분집합인 superkey가 없는 것이 candidate key이다. candidate key는 여러 개가 될 수 있다. 예를 들어, (A,B), (A,C)가 동시에 candidate key가 될 수 있다. 우리는 이 candidate key중 하나를 primary key로 사용한다. primary key를 이용해 우리는 relation schema의 각 데이터를 식별할 수 있다.

[DataBase] - Normalization(정규화)을 알아보자

1. 1NF 한 개의 column(attribute)에 한개의 원소(값)만 저장하는 것. 2.2NF 기본 키의 부분집합에 의해 결정되는 attribute가 없어야한다. 만약, 기본 키의 부분 집합에 의해 결정되는 attribute가 존재한다면, 그 부분집합을 기본키로하는 relation을 하나 만들어줘야한다. 3.3NF 기본키에 포함되지 않는 attribute끼리 의존성이 존재하면 안되는 것이다. 다시 말하면, 2NF가 진행된 테이블에서 이행적 종속을 없애는 것이다. 이행적 종속 : A → B, B → C면 A → C가 성립된다 Relation 내의 모든 종속관계에 대해서, trivial하거나, a가 superkey이거나, b에서 a를 뺀 나머지가 candidate key에 포함된다면 3NF를 만족한다..