동아리

    [팁|TIP] 맥OS에서 bits/stdc++.h 사용하기

    이번에 새롭게 알고리즘을 공부할 각오를 다지며 책을 샀는데, 첫 장에 떡하니 #include 가 있더라고요. 사실 이 헤더가 존재하고, 알고리즘 사이트와 대회에서 지원되는 경우가 많다고 들어서 전에 쓰려고 했다가 MacOS에서는 자동으로 설치되는 헤더가 아니라서 쓰려고 해도 헤더파일을 못찾는다고 나오더라고요. 그래서 어떻게 추가하는지 찾아보니 Xcode의 헤더파일 폴더 안에 넣는 방법이 가장 많이 떠서 이 방법을 시도해봤는데 여전히 헤더파일이 없다고 해서 2시간 정도의 학교 동아리 시간을 날렸습니다. 그러다가 유튜브를 찾아보니 /usr/local/include에 bits라는 폴더를 만들고 그 안에 stdc++.h 파일을 넣으라는 영상을 찾았습니다. 이 방법은 실행해보니까 인식은 하는 것 같은데 굉장히 긴..

    블록체인 기초 개념

    블록체인이란? 블록체인이란 데이터를 나누어 저장하는 데이터 분산 처리 기술입니다. 데이터를 특정 블록으로 나누고 이 블록들을 차례로 연결되어 사슬 구조를 가지게 되는 것이죠. 한 네트워크 상의 모든 사용자가 이 블록의 사슬, 즉 블록체인을 가지고 있으므로 특정 데이터를 위조하거나 조작하는 것이 거의 불가능합니다. (이 네트워크의 대표적 예로 비트코인과 같은 암호 화폐가 있습니다. 비트코인 채굴자와 소비자들 모두 비트코인 네트워크에 연결된 것입니다.) 왜 등장했나? 블록체인은 한마디로 정의하면 장부입니다. 즉, 금융거래에 사용되기 위해 만들어졌다고 보면 되는데, 그럼 왜 현재의 거래 방식과 다른 방법을 만들었을까요? 그 이유는 중앙화때문입니다. 현재 금융거래는 은행과 같은 중앙 기관에서 모든 거래 내역을 ..

    [백준 19942번-파이썬] 다이어트

    http://acmicpc.net/problem/19942 {코드} def calculate(do, picked, pick_sum): global chosen, tot_prc if pick_sum[4] >= tot_prc: return for i in range(4): if req_nut[i] > pick_sum[i]: break else: chosen = picked.copy() tot_prc = pick_sum[4] return if do == n: return picked.append(do+1) for i in range(5): pick_sum[i] += nuts[do][i] calculate(do+1, picked, pick_sum) picked.pop() for i in range(5): pic..

    [백준 19941번-파이썬] 햄버거 분배

    http://acmicpc.net/problem/19941 {코드} n, k = map(int, input().split()) placement = list(input()) ans = 0 for idx in range(n): if placement[idx] == 'P': for i in range(max(idx-k, 0), min(idx+k+1, n)): if placement[i] == 'H': placement[i] = 0 ans += 1 break print(ans) {설명} 이 문제는 간단히 사람의 위치에서 양쪽으로 k의 범위(±k)에서 가장 왼쪽에 있는 햄버거를 고르면 되는 문제입니다. 가장 왼쪽을 고르는 이유는 맨 마지막 위치에 사람이 있다면 그 사람은 왼쪽에서만 햄버거를 찾아야하기 때문에 최..

    [백준 10866번-C++] 덱

    http://acmicpc.net/problem/10866 {코드} #include #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, tmp; deque dq; string op; cin >> n; while (n--) { cin >> op; if (op == "push_front") { cin >> tmp; dq.push_front(tmp); } else if (op == "push_back") { cin >> tmp; dq.push_back(tmp); } else if (op == "pop_front") { if (dq.empty()) cout

    [백준 10845번-C++] 큐

    http://acmicpc.net/problem/10845 {코드} #include #include #include using namespace std; int main() { queue q; string ip; int tmp, n; scanf("%d", &n); while (n--) { cin >> ip; if (ip == "pop") { if (!q.empty()) { printf("%d\n", q.front()); q.pop(); } else { printf("-1\n"); } } else if (ip == "size") { printf("%d\n", q.size()); } else if (ip == "empty") { if (!q.empty()) { printf("0\n"); } else { pr..

    [백준 1158번-C++] 요세푸스 문제

    http://acmicpc.net/problem/1158 {코드} #include #include using namespace std; int main() { int n, k, tmp; scanf("%d %d", &n, &k); queue q; for (int i = 1; i

    [백준 1406번-C++] 에디터

    http://acmicpc.net/problem/1406 {코드} #include #include #include using namespace std; int main(){ int n; string s; cin >> s; cin >> n; list l(s.begin(),s.end()); auto now = l.end(); while(n--){ char tmp; cin >> tmp; if(tmp == 'L'){ if(now != l.begin()){ now--; } } else if(tmp == 'D'){ if(now != l.end()){ now++; } } else if(tmp == 'B'){ if(now != l.begin()){ now = l.erase(--now); } } else if(tmp =..

    [백준 1874번-C++] 스택 수열

    http://acmicpc.net/problem/1874 {코드} #include #include using namespace std; int main() { int n, num, cur = 1; stack s; string ans = ""; scanf("%d", &n); for (int i = 0; i = cur) { while (num + 1 != cur) { s.push(cur++); ans += "+\n"; } s.pop(); ans += "-\n"; } else { if (s.top() == num) { s.pop(); ans += "-\n"; } else { ans = "NO"; break; } } } cout

    [알고리즘&자료구조] 큐 - C++/파이썬

    큐란? 원소가 넣은 순서대로 나오는 자료구조(First in First out-FIFO) 위 그림처럼 1->2->3의 순서로 들어가면 1->2->3의 순서로 나온다. 큐는 대기줄을 생각하면 되는데 예를 들어 게임 접속 대기열을 큐라고 하는 것을 떠올리면 된다. *큐는 맨 앞과 맨 뒤의 원소들만 고려하기 때문에 나머지 원소들에 대해서는 알 수 없다. 큐 메소드 큐의 메소드로 다음과 같은 것들이 있다: front - 맨 앞의 원소 반환 back - 맨 뒤의 원소 반환 empty - 큐가 비어있는지 확인: 비어있으면 0 아니면 1 pop - 맨 앞의 원소 삭제 push - 맨 뒤에 원소 삽입 size - 큐의 길이 반환 언어마다 차이가 있을 수 있으나 위 메소드들은 거의 필수적으로 있다고 봐도 무방하다. 스택..