본문 바로가기

ALGORITHM/OTHER

(25)
[c++] 신규 아이디 추천 (프로그래머스-구현) https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 단순한 구현 문제이지만 string STL의 여러 함수를 잘 응용하면 훨씬 쉽게 풀 수 있는 문제 #include #include #include using namespace std; string solution(string new_id) { string answer = new_id; // 1 for (int i=0; i= 'A' && answer[i] ..
[c++] 모의고사 (완전탐색) https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 완전탐색 그냥 구현 문제같다. #include #include #include using namespace std; vector solution(vector answers) { vector answer; int count = (int)answers.size(); int mathAnswer1[5] = {1, 2, 3, 4, 5}; int mathAnswer2[8]..
[c++] K번째수 programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr #include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; for (int n=0; n
[c++] 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr #include #include #include using namespace std; string solution(vector participant, vector completion) { string answer = ""; unordered_map m; for (auto i: participant) { m[i]++; } for (auto i:..
[c++] 폰켓몬 (set, map) https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr #include #include using namespace std; int solution(vector nums) { set s; int answer = 0; for (int i=0; i
[c++] 2042 구간 합 구하기 (세그먼트 트리) 세그먼트 트리 이해 https://www.acmicpc.net/blog/view/9 세그먼트 트리 (Segment Tree) 문제 배열 A가 있고, 여기서 다음과 같은 두 연산을 수행해야하는 문제를 생각해봅시다. 구간 l, r (l ≤ r)이 주어졌을 때, A[l] + A[l+1] + ... + A[r-1] + A[r]을 구해서 출력하기 i번째 수를 v로 바꾸기. A[i www.acmicpc.net 전체 코드 #include #include #include #include using namespace std; typedef long long ll; ll N, M, K, input, a, b, c; ll init(vector &arr, vector &tree, ll node, ll start, ll end..
[c++] 11723 집합 (비트마스크) https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 비트마스크에 대해 알아보자 & AND 비트가 모두 1이면 1 | OR 비트가 다르면 1 SHIFT (오른쪽) 비트를 오른쪽으로 이동 ^ XOR 비트가 다르면 1, 같으면 0 ~ NOT 비트를 반전 GOOD BIT 변수는 0으로 초기화하고 사용하자 시간 초과가 난다면 입출력 시간을 줄이자 전체코드 #include #include using namespace std; int M, num, bit; string input; int mai..
[c++] 1655 가운데를 말해요 (힙!) https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 짭 중간값 구하는 문제 ! 시간 제한이 0.1초에 데이터의 삽입이 끊임없이 이뤄지므로 수행속도가 빠른 heap을 사용한다 max heap : 가장 큰 값이 top (기준 값보다 작은 값들을 나열, 기준 값 포함) 기준 값 ! min heap : 가장 작은 값이 top (기준 값보다 큰 값들을 나열, 기준 값 제외) 해서 중간값이 max heap 의 top에 위치하도록 한다. = m..