본문 바로가기

반응형

코딩 이야기

(100)
백준 1476번: 날짜 계산 C++코드(브루트포스, Bruteforce) #include using namespace std; int main(){ int e,s,m; int count = 0;; int re=0,rs=0,rm=0; cin >> e >> s >> m; while(1){ if(re == 16){ re = 1; } if(rs == 29){ rs = 1; } if(rm == 20){ rm = 1; } if(re == e & rs == s & rm == m){ cout
백준 10819번: 차이를 최대로 C++ 코드(브루트포스, Bruteforce) #include #include using namespace std; int n; int a[10]; int maxi = 0; //최대값 void func(vector v, int visited[10]){ if(v.size() == n){ int result = 0; for(int i = 0; i maxi){ maxi = result; } } for(int i=0; i> n; for(int i=0; i> a[i]; } vector v; int visited[10] = {0,}; func(v, visited); cout
백준 2512번: 예산 C++코드(이진 탐색) #include using namespace std; int values[10001]; int search(int n,int m, int standard){ int result = 0; for(int i=0; i
싱글톤 패턴 C++로 구현하기(Singleton pattern) 싱글톤 패턴이란? 싱글톤 패턴은 아무리 많은 객체를 생성해도, 단 하나의 인스턴스만을 생성한 것과 같은 디자인 패턴이다. 원래 같으면 여러 개의 객체를 생성하면 각각의 객체가 가진 변수는 값을 공유하지 않는다. #include class Math{ public: int score = 0; void setscore(int a){ score = a; }; int getscore(){ return score; }; }; using namespace std; int main(){ Math *math1 = new Math(); //math1이라는 객체 생성 Math *math2 = new Math(); //math2이라는 객체 생성 cout getscore()
Gof 디자인 패턴이란 무엇인가? Gof 디자인 패턴이란 무엇인가? 디자인 패턴은 객체 지향 프로그래밍에서 코딩을 할 때 발생하는 문제들을 깔끔하게 코딩하기 위한 방안들이다. 주로 자주 발생하는 문제들을 해결하기 위한 것들로 개발자들에게 있어서 공부하면 코드를 효율적으로 설계할 수 있는 스킬이다. Gof는 Ganf of four의 약자로 Erich Gamma, Richard Helm, Ralph Johnson, John Vissides 이 4인방을 지칭한다. 검색을 해보니, gang of four가 중국 공산당 정치 세력을 가르키기도 하나 이는 Gof 디자인 패턴과 전혀 상관 없는 것으로 보인다. 필자가 이를 공부하려는 이유 필자는 유니티를 통해 게임을 개발하면서 남들과 협업을 하는 일이 많고, C# 프로그래밍을 하면서 코드를 객체지향화..
Union-Find(유니온 파인드)에 대해 알아보고 구현하기 Union-Find? 유니온 파인드. 그대로 해석하면 union은 조합, find는 찾다로 해석이 가능하다. 실제로 이 알고리즘은 두 연산 find와 union를 사용한다. 여러 개의 노드가 있다고 가정했을 때 2개의 노드를 union을 통해 합치는 것도 가능하고, find를 통해 해당 노드의 부모노드를 찾는 것 또한 가능하다. 전체적인 구현 방법 노드들의 부모를 나타낼 배열을 선언해줘야한다. 예를 들어 트리를 다룬다고 했을 때 직접적으로 간선을 옮겨주는 식으로 할 수 없는가? 라는 생각을 가질 수 있으나, 가능은 하나 노드들의 부모가 하나로 통일됬는 지 검사하는 등의 연산이 필요할 경우, 시간복잡도가 난해해지므로 O(n)으로 끝낼 수 있게 노드들의 부모를 나타낼 배열을 선언해줘야한다. 부모노드가 없을 ..
백준 1987번: 알파벳 C++코드(DFS, Backtracking, 백트래킹) #include #include using namespace std; int alphabet[26] = {0,}; char graph[21][21] = {0,}; int r,c; int result = 0; int y[4] = {0,0,-1,1}; int x[4] = {-1,1,0,0}; void dfs(int ny, int nx, int cnt){ if(result c; for(int i=0; i graph[i][j]; } } alphabet[graph[0][0]-65] = 1; dfs(0,0,1); cout
백준 16953번: A -> B C++ 코드(BFS) #include #include #include using namespace std; int bfs(long long a, long long b){ queue q; q.push(make_pair(a, 1)); while(!q.empty()){ pair now = q.front(); q.pop(); if(now.first == b){ return now.second; } if(now.first*2 a >> b; cout

반응형