728x90
반응형

알고리즘 107

[프로그래머스/2019 KAKAO/C++] 오픈채팅방

https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include #include #include using namespace std; vector solution(vector record) { vector answer, state; map user; for(int i=0; i> token) str[index++] = token; if(str[0] == "Enter"){ state.push_back..

알고리즘 2023.01.12

[백준/그리디/C++] 1744번 수 묶기

https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 문제풀이 방법 1. 음수와 양수를 두 벡터에 따로 담는다 (0은 곱하면 0이 되므로 음수와 함께 담는다) 2. 큰 수 끼리 곱하면 수가 더 커지기 때문에 두 벡터를 정렬한다 3. 변수 tmp1을 두고 tmp1이 빈 경우 tmp1에 수를 넣고, tmp1에 수가 들어있는 경우 곱한 값을 result 에 넣어준다 (두 벡터 모두 수행) #include #include #include using nam..

[백준/재귀/C++] 2003번 수들의합2

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net #include using namespace std; int n, m; int arr[10001]; int result = 0; void solve(int index, int tot){ // 시작 인덱스, 원소 합 if(index>n) return; if(tot == m){ result++; return; } solve(index+1, tot+arr[ind..

알고리즘 2023.01.11

[백준/BFS/C++] 1697번 숨바꼭질 *

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include using namespace std; const int MAX = 100001; int n, k; bool visited[MAX]; int path[MAX]; queue q; void bfs(int v){ path[v] = 0; visited[v] = true; q.push(v); while(!q.empty()){ int w = q.front(); if(..

알고리즘 2023.01.10

[백준/백트래킹/C++] 10971번 외판원 순회2 *

https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net #include using namespace std; int n; bool ch[11]; int ans = 1e9; int w[10][10]; void go(int start, int index, int cnt, int sum) { // 최초 출발지점, 현재 위치, 지나간 마을수, 이동비용 if(cnt == n){ if(w[index][start] ==..

알고리즘 2023.01.10

[백준/백트래킹/C++] 6603번 로또

https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net #include using namespace std; int k; int num[50], arr[50]; bool isused[50]; void backtrack(int k, int n){ if(k==6){ bool flag = true; int tmp = -1; for(int i=0; i arr[i]) flag = false; tmp = arr[i]; } if(flag){ for(in..

알고리즘 2023.01.09
728x90
반응형