반응형

C++ 371

[G4] 백준 1339번 단어 수학 C++ 그리디 알고리즘, 우선순위 큐, 해시맵, 문자열

리뷰 https://www.acmicpc.net/problem/1339그리디 알고리즘 치곤 여러가지 알고리즘과 자료구조를 혼합하여 푼 문제  전역 변수n : 주어지는 문자열의 개수values : 각 문자가 어떤 숫자로 파싱될지를 결정하기 위한 배열dic : 각 문자의 가중치를 저장하기 위한 해시맵words : 각 문자의 원본을 저장하기 위한 문자열 타입 배열Prio : PQ에서 우선순위 순으로 정렬하기 위한 구조체 함수없음  문제풀이n값을 입력 받고 n번의 반복문을 실행하여 각각 문자열을 문자열 변수 s에 저장해 준다.words배열에 s를 기록해 주고, s를 반전시켜 각 문자를 키로 값을 10^i 만큼 더해준다.Prio타입 우선순위 큐 pq를 초기화 해주고, dic를 순회하며 pq에 dic의 key와 v..

[G5] 백준 1240번 노드사이의 거리 C++ LCA, 트리

리뷰https://www.acmicpc.net/problem/1240간선에 가중치가 있는 트리로 이루어진 자료 구조에서 주어진 노드간 거리를 계산하는 문제N, M의 최대 값이 작아 DP를 활용한 LCA를 굳이 안해도 되었지만 복기를 할 겸 해당 방법으로 시도하였다.결국엔 반복문에서 LOG 값을 잘못 설정하여 OOB를 두번 받았다, 꾸준히 연습하는게 중요한 것 같다.  전역 변수LOG : 부모를 비트단위 DP로 체크하기 위한 최대값N : 노드 번호의 최대값n : 문제에 주어지는 노드의 개수, 1부터 시작m : 문제에 주어지는 쿼리문의 개수depth : 각 노드의 트리에서의 깊이를 저장할 정수형 배열cost : 각 노드의 루트로 부터 가중치를 저장할 정수형 배열parent : 각 노드의 부모 정보를 저장하기..

[G5] 백준 2470번 두 용액 C++ 투 포인터, 정렬

리뷰 간단한 이분탐색 문제  전역 변수n : 주어지는 수열의 길이o, t : 섞었을 때 0과 가장 가까운 두 용액을 저장할 변수ans : 여태 까지 나온 0과 가장 가까운 수를 저장하기 위한 변수lst : 수열의 정보를 입력받기 위한 정수형 배열 함수없음  문제풀이n값을 입력 받고, 길이가 n인 수열의 정보를 lst에 입력 받아준다.lst의 요소를 오름차순으로 정렬해 준다.l, r을 각각 수열의 맨 앞과 맨 뒤의 인덱스로 지정해 준다.l과 r이 동일해 질 때까지 반복문을 실행한다.lst의 l, r인덱스의 값을 더한 값을 정수형 변수 val에 저장해 준다.val의 절대값이 ans의 절대값보다 작다면 ans를 val로 저장하고, o를 lst[l]로, t를 lst[r]로 변경해 준다.이후 val이 0보다 크다..

[G4] 백준 2800번 괄호 제거 C++ 스택, set, 백트래킹

리뷰https://www.acmicpc.net/problem/2800그냥 되는데로 막 풀었는데 이게 왜 맞지? 싶었던 문제수식의 길이가 짧고, 괄호 쌍이 많아야 10개라 시간 초과는 나지 않은 것 같다.  전역 변수n : 주어지는 수식의 길이를 저장할 변수cnt : 괄호 쌍의 개수를 저장할 변수si : 열린 괄호의 인덱스를 저장할 정수형 벡터ei : 닫힌 괄호의 인덱스를 저장할 정수형 벡터ans : 괄호를 제거한 문자열을 저장하기 위한 문자열 형식의 sets : 주어지는 수식을 입력 받을 문자열 변수 함수1. btvoid bt(int level, string str) 괄호를 제거한 모든 수식을 탐색하기 위한 백트래킹 함수매개 변수로 재귀 레벨 level과 현재 문자열 str을 입력 받는다.만약 재귀가 한..

[G4] 백준 1967번 트리의 지름 C++ DFS, 트리

리뷰 https://www.acmicpc.net/problem/1967간선의 가중치가 있는 트리에서 가장 먼 노드끼리의 길이를 구하면 트리의 지름이 된다.유사문제로는 BOJ 1167번이 있다.https://www.acmicpc.net/problem/1167  전역 변수n : 노드의 개수v : 방문 처리 배열Edge : 간선을 나타낼 구조체, 다음 노드 nxt와 가중치 val값을 가진다.lst : 인접 리스트를 저장할 Edge타입 2차 벡터result : 시작 노드로 부터 가장 먼 노드와 그 때의 가중치를 저장할 정수형 2개의 pair 함수1. dfsvoid dfs(int node, int val) 깊이 우선 탐색을 통해 트리의 지름을 구하기 위한 함수매개변수로 탐색을 진행할 노드 node와 현재 까지의 ..

[S1] 백준 28107번 회전초밥 C++ 큐

리뷰 https://www.acmicpc.net/problem/28107큐를 20만개를 쓴다는게 메모리 적으로 괜찮은가 생각이 들었지만 제한이 1024MB이므로 그냥 했더니 AC를 받았다.  전역 변수n, m : 손님의 수 n, 요리의 수 mcnt : 손님이 먹은 초밥의 개수를 저장할 정수형 배열q : 각 초밥을 먹고 싶어하는 사람의 큐 배열, 1번 손님부터 우선 순위가 주어진다. 함수없음  문제풀이n, m값을 입력 받고 1번 손님부터 n번 손님까지 반복문을 실행한다.해당 손님이 먹고 싶어하는 초밥의 개수를 정수형 변수 c에 입력받고, c번의 반복문을 실행한다.먹고 싶어하는 초밥의 번호를 정수형 변수 s에 입력 받고, s인덱스 큐에 손님의 번호 i를 추가해 준다.m개의 초밥을 순회하기 위해 m번의 반복문..

[G4] 백준 3078번 좋은 친구 C++ 큐, 슬라이딩 윈도우

리뷰 https://www.acmicpc.net/problem/3078큐를 사용한 간단한 슬라이딩 윈도우 문제  전역 변수n, k : 친구의 수 n, 등수의 최대 차이 klst : 친구의 이름 길이를 저장할 정수형 배열v : 슬라이딩 윈도우 내 각 이름의 길이의 개수를 저장할 정수형 배열ans : 정답을 저장하기 위한 변수, 최악의 경우 30만^2 / 2가 주어질 것 같아 long long타입을 사용했다.q : 슬라이딩 윈도우로 사용할 큐 함수1. inputvoid input() 변수와 배열 초기화를 진행할 함수n, k를 입력 받고 n번의 반복문을 실행한다.친구의 이름 s를 입력 받고, 해당 이름의 길이를 lst배열에 저장해 준다. 2. initvoid init() 초기 슬라이딩 윈도우를 초기화 하기 위..

[G3] 백준 6087번 레이저 통신 C++ 다익스트라, 플러드 필

리뷰 https://www.acmicpc.net/problem/6087맵 상에서 주어지는 두개의 C를 거울을 적절히 배치하여 레이저가 통하도록 하는 문제다익스트라에서 가중치를 거리가 아닌 다른 방식으로 사용하는 것 자체가 신박한 문제였다.  전역 변수w, h : 맵의 가로 길이 w, 맵의 세로 길이 hidx : C를 구분하여 배열에 저장하기 위한 인덱스dx, dy : 4방향 탐색을 위한 방향 배열lst : 맵 정보를 문자열로 받기 위한 문자열 타입 배열Pos : 다익스트라 탐색을 위한 구조체, x, y좌표와 방향을 바꾼 횟수 v, 현재 방향 dir과 cmp함수를 정의한다.C : C의 위치 좌표를 저장하기 위한 Pos타입 배열 함수1. inputvoid input() 변수와 맵 정보를 입력 받고 C정보를 ..

[P5] 백준 3197번 백조의 호수 C++ 플러드 필, BFS, 유니온 파인드

리뷰 https://www.acmicpc.net/problem/3197드디어 풀었다.. X를 미리 방문처리 안해주다 보니 메모리가 터지고, 미리 방문처리 해주면 LXL 같은 케이스에서 답이 0이 나와서 고심하다가 적절한 해법이 떠올라 적용했더니 바로 AC를 받았다.  전역 변수r, c : 맵의 세로 변의 길이 r, 맵의 가로 변의 길이 cidx : 분리 집합의 인덱스를 지정하기 위한 변수ans : 정답을 저장하고 출력하기 위한 변수dx, dy : 4방향 탐색을 위한 방향 배열lst : 맵 정보를 받기 위한 문자열 배열v : 맵 상의 분리집합을 표시하기 위한 정수형 2차 배열Pos : 시뮬레이션을 할때 좌표 및 그룹 정보를 식별하기 위한 구조체nodes : 그룹의 소속을 관리하기 위한 정수형 벡터ice :..

[G2] 백준 21609번 상어 중학교 C++ 구현, 시뮬레이션, BFS

리뷰https://www.acmicpc.net/problem/21609구현 + 구현 + 구현 + 구현 + BFS + ... + 조건 + 조건 + 조건 + 구현 + 구현 + 구현의 지옥 문제그 많은 변수 중 어느 하나도 잘못된 조건을 가지고 있으면 전혀 다른 답이 출력된다.문제의 조건도 꽤나 많고 까다로워서 실수하기 좋은 문제 예제만으론 엣지케이스를 잡지 못함  전역 변수n : 주어지는 맵의 한 변의 길이m : 맵 상에서 주어지는 일반 블럭의 종류의 개수ans : 정답을 저장하고 출력하기 위한 변수lst : 맵 정보를 입력 받고, 시뮬레이션을 진행하기 위한 2차원 정수 배열v : 매번 오토플레이 시 맵 상에서의 그룹화를 위한 2차원 정수 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 각 블럭의..

728x90
반응형