일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- map
- 배열
- 유클리드호제법
- DFS
- 정렬
- N과M
- int
- 오블완
- 백준
- 우선순위큐
- BFS
- 다이나믹프로그래밍
- Sort
- Set
- 문자열
- 최소공배수
- stoi
- 깊이우선탐색
- vector
- 이분탐색
- priority_queue
- 에라토스테네스의 체
- 티스토리챌린지
- DP
- 분할정복
- C++
- 그래프
- 백트래킹
- 알고리즘
- 프로그래머스
- Today
- Total
목록전체 글 (220)
안녕 세상아,
https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 그냥 쉽게 생각해서 2중 for문 사용했는데 역시나 시간초과로 틀림 ㅎㅎ;; 틀리는게 당연함 입력값 최대가 N, M 둘다 100,000임 #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int..
구조체를 정렬할 때 벡터로 변환해서 정렬하면 편하다. struct 입력 받는 것도 벡터를 이용해서 받으면 돼서 따로 문법을 외우지 않아도 된다. 역시 벡터가 짱인듯? 하지만 일반적인 벡터와 달리 조건이 있어야한다. 조건 없이 하면 에러가 나면서 작동하지 않는다. #include #include #include #include using namespace std; struct Person { string name; int kor, eng, math; }; bool compare(Person p1, Person p2) { if (p1.kor == p2.kor && p1.eng == p2.eng && p1.math == p2.math) return p1.name < p2.name; if (p1.kor ==..
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..
데이터 타입은 기본적으로 음수부터 양수까지의 값을 가지는데, unsigned가 지원되면 0을 포함하는 양수의 값을 가지게 된다. 유형 이름 바이트 범위 (signed) int 4 -2,147,483,648 ~ 2,147,483,647 unsigned int 4 0 ~ 4,294,967,295 char 1 -128 ~ 127 unsigned char 1 0 ~ 255 short, (signed) short int 2 -32,768 ~ 32,767 (signed) long long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036, 854,775 807 unsigned long long 8 0 ~ 18,446,774,073,709,551,615 bool 1 true / fals..