C++ 466

[L3] 프로그래머스 베스트앨범 C++ 해시맵, 우선순위 큐

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 가장 많이 Play된 음악의 장르 순으로, 각 장르에서 최대 2개까지의 음악 고유번호를 출력하는 문제문자열을 기준으로 Play횟수를 카운팅 해야하므로 맵을 써야된다.장르가 중복으로도 주어지므로 각 고유번호 별 Play횟수를 알아야 한다.즉, 장르별 Play횟수의 합과 음악의 고유번호, 개별 Play횟수를 모두 알아야 하고, Play의 최대를 알아야 하는 문제  전역 변수Song : 음악의 Play횟수와 고유 번호를 저장하기 위한 구조체Desc : 음악의 장르와 Play횟수의 총합을 저장하기 위한 구조체dic1 : 음악의 장르와 해당 장르의 음악들을 해..

[S2] 백준 24938번 키트 분배하기 C++ 그리디 알고리즘, 덱

리뷰 https://www.acmicpc.net/problem/24938Solve.ac에 있는 주간문제를 알고리즘 분류를 안보고 풀어보았다. 그런데 그리디 알고리즘 문제가 나왔군 전역 변수n : 방의 개수를 저장할 변수total : 키트의 총 개수를 저장할 변수ans : 발생하는 혼잡도의 총 값을 저장하고 출력할 변수kit : 각 방마다 보유한 키트의 개수를 입력 받을 정수형 배열, 크기는 20만으로 초기화 한다.Node : 키트를 더 많이 갖고 있는 방에서 남는 키트 정보를 저장할 구조체deq : 방의 순서대로 남은 키트를 수거하여 갖고 있는 키트를 관리할 Node타입 덱 함수없음  문제풀이n값을 입력 받고 n번의 for문을 순회해 준다.kit의 i번째 인덱스에 해당 방이 보유한 키트 수를 입력받아 준..

[P3] 백준 13505번 두 수 XOR C++ 트라이, 트리

리뷰 https://www.acmicpc.net/problem/13505최대 10만로 주어지는 N개의 수 중 두개의 수를 XOR연산 했을때 가장 큰 값을 찾는 문제알고리즘 분류에 트라이라고 명시되어있지 않았다면 절대 트라이로 접근 못했을 것 같다. 전역 변수LOG : 입력으로 주어지는 수 최대 10억을 비트로 자릿수를 계산하기 위한 정수형 상수 변수n : 입력으로 주어지는 숫자의 개수를 저장할 변수ans : 두 수의 XOR한 결과 중 가장 큰 값을 저장할 변수Trie : 트라이를 통해 비트로 구성된 트리를 관리하기 위한 구조체 함수1. Insertvoid Insert(Trie* node, const string& str) 1, 0으로 이루어진 문자를 트리에 삽입하는 함수매개변수로 root의 노드 node..

[G1] 백준 17435번 합성함수와 쿼리 C++ LCA, 최소 공통 조상, 희소 배열

리뷰 https://www.acmicpc.net/problem/17435문제 분류만 보았을 땐 이게 왜 LCA지? 라는 느낌이 들었지만, 친구에게 설명을 듣고 나서 이해가 되었다. 전역 변수MAX_N : 주어지는 함수 내 원소의 최대 개수를 저장할 정수형 상수 변수LOG : 비트단위로 부모를 탐색할때 사용할 정수형 상수 변수m, q : 주어진 원소의 개수를 저장할 변수 m, 쿼리의 개수를 저장할 변수 qn, x : 함수를 반복할 회수를 저장할 변수 n, 함수의 초깃값에 넣을 원소의 번호 xpar : 각 원소의 2^n번째 부모 원소를 저장할 2차원 배열, MAX_N * LOG 크기로 저장한다. 함수1. preprocessvoid preprocess() par배열을 초기화 하기 위한 함수각 원소의 par배열..

[G4] 백준 1477번 휴게소 세우기 C++ 이분 탐색, 매개 변수 탐색

리뷰 https://www.acmicpc.net/problem/1477이분 탐색을 통해 휴게소를 m개 세웠을때 휴게소간 거리가 최소가 되게 만들어 주는 문제 전역 변수n, m, l : 현재 설치된 휴게소의 개수n, 추가로 설치해야 하는 휴게소의 개수m, 도로의 길이 lans : 휴게소간 거리가 최소가 되는 경우의 정답lst : 설치되어있는 휴게소의 정보를 담은 정수형 배열 함수없음  문제풀이n, m, l값을 입력 받고, n개의 수를 lst배열에 입력 받은 뒤 lst배열을 정렬 해준다.만약 n이 0일 경우 ans는 l / (m + 1)을 올림 처리한 값으로 ans에 저장한다.n이 0이 아닐 경우 이분탐색을 진행해 준다.왼쪽 탐색 시작은 left = 1로, 오른쪽 탐색 시작은 최대 도로 보다 두배 큰 rig..

[S1] 백준 14889번 스타트와 링크 C++ 백트래킹, 완전 탐색

리뷰 https://www.acmicpc.net/problem/14889백트래킹 문제이나 한번 더 생각이 필요한 문제 ㅠ 전역 변수n, ans : 주어지는 팀의 개수를 저장할 변수 n, 정답을 저장할 변수 anslst : 맵 정보를 입력 받을 정수형 배열, 1-based-index이므로 21 * 21로 세팅한다.v : 방문 처리용 배열, 크기는 20으로 초기화(?) 21로 해야하는거 같은데 20으로 했는데도 맞았다. 함수1. btvoid bt(int level, vector& start) 재귀를 통해 스타트 팀과 링크 팀의 선수 정보의 차를 구하는 함수매개변수로 재귀 단계인 level과 스타트 팀의 정보 start를 받아준다.기저조건은 총 두가지가 있다, 첫번째로 ans가 0일때는 더 이상 탐색할 필요가..

[G2] 백준 1167번 트리의 지름 C++ 트리, DFS, 깊이 우선 탐색

리뷰 https://www.acmicpc.net/problem/1167간선의 가중치가 있는 트리에서 두 노드의 거리가 가장 큰 길이를 구하는 문제 전역 변수n : 노드의 개수를 저장할 정수형 변수far_node : 첫 번째 dfs를 수행했을 때 가장 먼 거리를 가진 노드의 번호를 저장할 정수형 변수max_dist : 각 dfs마다 가장 먼 거리를 식별하기 위한 정수형 변수v : 깊이 우선 탐색을 할때 방문 처리를 확인하기 위한 정수형 배열, 크기는 100001로 초기화 한다.Edge : 노드의 자식과 간선의 가중치를 저장하기 위한 구조체edges : 각 노드의 인접리스트를 저장하기 위한 Edge타입 벡터, 크기는 100001로 초기화 한다. 함수1. dfsvoid dfs(int node, int dist..

[P2] 백준 15480번 LCA와 쿼리 C++ LCA, 최소 공통 조상, 트리

리뷰 https://www.acmicpc.net/problem/15480LCA의 심화 문제, 루트가 매번 바뀔때마다의 처리하는 아이디어에 배우게 된 문제였다. 전역 변수MAX_N : 정점의 최대 개수를 저장할 정수형 상수 변수LOG : DP에서 2의 N승으로 빠르게 탐색하기 위해 사용할 정수형 상수 변수n, m : 문제에서 주어진 정점의 개수 n, 쿼리의 개수 mdepth : 각 노드의 초기 깊이를 저장할 정수형 배열, 크기는 MAX_N으로 초기화parents : 각 노드의 부모 정보를 저장해 둔 정수형 배열, 크기는 MAX_N * LOG로 초기화lst : 각 정점간의 간선을 인접리스트로 저장할 정수형 벡터, 크기는 MAX_N으로 초기화 함수1. dfsvoid dfs(int node, int par, i..

[L3] 프로그래머스 네트워크 C++ 유니온 파인드

리뷰 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr연결된 컴퓨터끼리를 한개의 네트워크라 보고, 네트워크 집합의 개수를 구하는 문제  전역 변수nodes : 각 컴퓨터가 속한 네트워크의 번호를 저장하기 위한 정수형 배열, 크기는 200으로 초기화 함수1. Findint Find(int a) 노드가 속한 집합의 번호를 찾기 위한 함수매개변수로 탐색하고자 하는 노드의 번호를 a로 받아온다.nodes의 a인덱스가 a라면 a를 리턴해 주면 된다.아닐 경우 재귀를 통해 탐색을 하며 경로 압축을 시켜준다.경로 압축을 통해 Find가 실행될때마다 경로가 최신화 된다. 2...

[G5] 백준 1593번 문자 해독 C++ 슬라이딩 윈도우, 구현, 문자열

리뷰 https://www.acmicpc.net/problem/1593그리디한 접근 시 시간 초과가 났다. for문 한줄로 완탐을 끝낼 수 있는 방법을 많이 연구 해야할 것 같다. 전역 변수n, m, ans : 문자열 a의 길이 n, 문자열 b의 길이 m, 정답 저장용 변수 ansa, b : 입력으로 주어지는 첫번째 문자열 a, 두번째 문자열 bav : a문자열이 보유하고 있는 문자의 개수 정보 배열, 52크기로 세팅한다.bv : b문자열의 보유하고 있는 문자의 개수 정보 배열, 마찬가지로 52크기로 세팅 함수1. chkint chk() 현재 부분문자열이 일치하는지 여부를 체크하기 위한 함수av와 bv의 모든 인덱스에 저장된 값이 동일한지 체크해 주어야 한다.만약 다른 값을 만났다면 0을 리턴해 주면되고..

728x90