본문 바로가기

C++18

[프로그래머스] LV3 | 연속 펄스 부분 수열의 합 | C++ https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근법 부분 수열이니까 누적합을 사용할 것이다. 수열이므로 이분탐색은 절대 아니다. {1, -1, 1, -1,...} 펄스를 사용하나 {-1, 1, -1, 1...} 펄스를 사용하나 누적합 배열의 원소 값은 차이가 없다. (부호만 다르다.) N이 최대 500,000 이므로 투포인터로 합이 최대인 구간을 찾는 것은 불가능하다. 오잉 배열의 최댓값과 최솟값의 차이가 기댓값이랑 같네??? 정답코드 #.. 2023. 3. 15.
[백준] 12015번: 가장 긴 증가하는 부분 수열 2 | C++ 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 정답코드 C++의 lower_bound, upper_bound C++에서는 이진탐색으로 원소를 탐색하는 lower_bound, upper_bound 메서드를 제공한다. lower_bound : 찾으려는 key 값보다 같거나 큰 숫자가 등장하는 인덱스를 반환한다. upper_bound : 찾으려는 key 값을 초과하는 숫자가가 등장하는 인덱스를 반환한다. int arr[]={0,1,2,3,4,5,5,5,6,7}; lower_bound(arr.begin(), arr... 2023. 2. 23.
[백준] 10971번: 외판원 순회 2 | C++ 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 1. 외판원 순회 알고리즘 - 가중치가 양의 정수이고 N이 작을 경우 (Sliver 2) 외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문제 중 하나이다. 여러 가지 변종 문제가 있으나, 여기서는 가장 일반적인 형태의 문제를 살펴보자.. 2022. 12. 25.
[백준] 2036번: 수열의 점수 | C++ https://www.acmicpc.net/problem/2036 2036번: 수열의 점수 n개의 정수로 이루어진 수열이 있다. 이 수열에서 한 정수를 제거하거나, 또는 두 정수를 제거할 수 있다. 한 정수를 제거하는 경우에는 그 정수가 점수가 되고, 두 정수를 제거하는 경우에는 두 www.acmicpc.net 틀린 이유 - 질문 답변 中 (https://www.acmicpc.net/board/view/21040) 아. 알고리듬이 맞은 거 같은데. 틀렸습니다가 뙇~ 하고 뜨면 오버플로우를 의심해 봐야 겠지요? long long 형 변수 = long long형 변수 + (int형 변수 * int형 변수) 인데 int형 변수의 절대치가 100만까지 들어올 수 있거든요.. 100만 * 100만이면 딱 봐도 1.. 2022. 12. 23.
[백준] 18430번: 무기 공학 | C++ https://www.acmicpc.net/problem/18430 18430번: 무기 공학 첫째 줄에는 길동이가 가지고 있는 나무 재료의 세로, 가로 크기를 의미하는 두 자연수 N, M이 주어진다. (1 ≤ N, M ≤ 5) 다음 N개의 줄에 걸쳐서, 매 줄마다 나무 재료의 각 위치의 강도를 나타내 www.acmicpc.net 틀린 이유 안 쓰려다가 날 너무 괴롭혀서 쓴다... 1. 처음 접근 때는 백트랙킹 메서드 안에 for 문을 두 개 돌렸었다. 인수로 x, y 좌표를 입력 받고 인수에서 시작하는 for 문 두 개.... (이것이 근본적으로 틀린 접근이었다.) 아무튼 처음 틀린 이유는 (1) for 문을 돌릴 때 p,q,x,y 변수를 아예 틀리게 써서 틀렸다. → 오타를 인지 못했다는 뜻 2. 오타.. 2022. 12. 19.
[백준] 1062번: 가르침 | C++ https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 틀린 이유 1. K=5 일 때, antatica 처리를 하지 않았다. 2. 연산자 우선순위를 고려하지 못했다. - 코드 주석 (1)에서 learned_bit & w 는 AND 연산한 bit를 반환한다. 그런데 if의 조건문은 0이 아닌 것은 모두 참으로 판별하므로 하나 이상 일치하는 bit가 있을 경우 모두 cnt++ 연산 되었다. 조건문을 learned_bit & w==w 라고 코드를 고.. 2022. 12. 14.
[백준] 1744번: 수 묶기 | C++ https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 틀린 이유 1. 음수 벡터를 내림차순으로 정리하지 않았다. 음수와 양수 벡터에서 절댓값이 큰 값 2개를 곱하는 것으로 접근하였는데, 음수 벡터도 오름차순으로 정리하여 절댓값이 작은 값부터 pop_back() 되었다. ex) [-1, -23, -6, -72] => [-72, -23, -6, -1], v.back() == -1 2. 양수 벡터와 음수 벡터에 원소가 1개씩 남았을 때, zeroCnt가.. 2022. 12. 6.
[C++] 우선순위 큐 오름차순(최소힙) 만들기 1. 기본 자료형 일 때 priority_queue q; 2. pair 자료형 일 때 priority_queue q; 2022. 12. 4.