일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 에라토스테네스의 체
- 정렬
- 백트래킹
- vector
- 유클리드호제법
- Sort
- 배열
- Set
- 그래프
- int
- BFS
- 티스토리챌린지
- DP
- 분할정복
- DFS
- 알고리즘
- 최소공배수
- 이분탐색
- 우선순위큐
- priority_queue
- C++
- stoi
- 다이나믹프로그래밍
- N과M
- 문자열
- 깊이우선탐색
- map
- 오블완
- 백준
- Today
- Total
목록C++ (73)
안녕 세상아,
https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (가장 작은 값 * 가장 큰 값) + (두번째로 작은 값 * 두번째로 큰 값) + ... + (가장 큰 값 * 가장 작은 값) 일케 구하면 된다. 이렇게 하기 위해 두 벡터를 모두 정렬하면 된다. sort 정렬은 기본적으로 오름차순으로 되어있기 때문에 greater()를 sort 맨 뒤에 붙여주면 내림차순 정렬로 바뀐다. #include #include #include using namespace..
https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 산술평균, 중앙값, 최빈값, 범위를 구하는 문제이다. 다른 값은 구하기 매우 쉽지만 최빈값은 약간의 생각을 하고 풀어야한다. 아마 이것 때문에 실버3인듯한 느낌? 산술평균값은 소수점 이하 첫번째 자리에서 반올림해야한다. 이는 round를 사용하여 쉽게 구할 수 있다. round는 cmath 헤더에 include 되어있다. 중앙값과 범위는 vector를 정렬하면 쉽게 구할 수 있다. 최빈값은 절댓값이 4000이하..
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 세상에는 똑똑한 사람이 너무 많다..물론 내가 바보일지도? 처음부터 생각하느라 뇌정지왔는데 거꾸로 풀면 간단하게 풀린다. ex) n=7, 아래와 같이 day와 cost가 주어질 때 맨 뒤부터 풀게되면 i=7일 때 date=7+2 이기 때문에 n보다 큰 수여서 dp가 0이 된다. i=6일 때도 date=6+4 이기 때문에 n보다 큰 수여서 dp가 0이 된다. 1일 2일 3일 4일 5일 6일 7일 day 3 5 1 1 2 4 2 cost 10 20 10 20 15 40 200 dp 0 0 i=5일 때부터는 date가 n을 넘어가지 않기 ..
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net N과 M(1)에서 조건만 조금 추가하면 해결 가능하다. N과 M(1)이 중복도 허용하는 순열이라면 이 문제는 중복을 허용하지 않는 조합과 같은 문제라고 생각하면 된다. 출력되는 모든 숫자는 첫번째 숫자는 두번째 숫자보다 작도록, 두번째 숫자는 세번째 숫자보다 작도록 하면 된다. #include #include using namespace std; int arr[9] = {}; bool visit..
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 내가 처음 접해보는 너비우선탐색, 깊이우선탐색 문제... dfs, bfs 모두 사용해서 해결할 수 있다. #include #include #include using namespace std; vector map[101]; bool visited[101] = { false };//방문 유무 파악 int ans = 0; //재귀를 이용한 dfs int dfs(int n) { for (int i = 0; i..
https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 프린트의 중요도가 큰 순서대로 출력해야하기 때문에 우선순위큐를 사용해야한다. 우선 queue의 pair를 사용하여 위치값과 중요도를 입력 받는다. 동시에 우선순위큐에 중요도를 입력 받는다. 이렇게 되면 우선순위큐에 중요도가 내림차순 형식으로 정렬된다. 내림차순으로 정렬된 우선순위큐의 top과 일반 큐의 중요도가 일치할 때와 일치하지 않을 경우를 나눈다. 일치할 때 cnt++를 하고 현재 위치값이 입력..
https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; string solution(string s) { //check가 true인 상태일 때 (공백 다음에 나오는 문자) int i = 0; bool check = true; //맨 처음 나오는 단어에 대응 while (s[i]) { //공백일 경우 넘어감 if (s[i] == ' ') { check = true; i..
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t; cin >> t; int zero[45] = {}; int one[45] = {}; zero[0] = 1; zero[1] = 0; one[0] = 0; one[1] = 1; for (int i = 2; i < 45; i++) { zero..
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; int dp[13] = {}; dp[0] = 1; dp[1] = 2; dp[2] = 4; for (int i = 3; i < 12; i++) { dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];..
우선순위 큐란? 일반적인 큐와 달리 선입선출 구조가 아닌 큐에 있는 모든 원소 중에서 가장 큰 값이 top을 유지하도록, 우선순위가 가장 크도록 설계되어있다. 또한 내부적으로 heap이라는 자료구조를 사용하고있다. #include 선언해야한다. 기본 메소드 push() : 우선순위 큐에 원소를 추가한다 pop() : 우선순위 큐에서 top의 원소를 제거한다 top() : 우선순위 큐에서 top에 있는 원소 즉 우선순위가 높은 원소를 반환한다. empty() : 우선순위 큐가 비어있으면 true를 반환하고 그렇지 않으면 false를 반환한다 size() : 우선순위 큐에 포함되어 있는 원소의 수를 반환한다 기본 자료형 사용법 #include #include using namespace std; ..