C++ 517

[G4] 백준 14698번 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) C++ 우선순위 큐

리뷰 https://www.acmicpc.net/problem/14698C++로 푸려고 시도했는데 큐 내부 요소가 long long을 초과하는 경우 처리가 안떠올라서 그냥 파이썬으로 풀었다.  함수없음  문제풀이t에 테스트 케이스 개수를 받아주고, t번의 for문을 수행해 준다.매 테스트 케이스 마다 n에 요소의 개수, lst에 배열 정보를 입력 받는다.lst를 heapq객체로 만들어 준 뒤 빈 리스트 arr을 초기화 해준다.무한 루프를 수행하고, 힙에서 요소를 하나 빼내 변수 one에 저장해준다.만약 lst가 비었을 경우 break처리해 준다, 아니라면 요소를 하나 더 빼내 변수 two에 저장해준다.arr과 lst에 one * two값을 추가해 준다.while 루프가 중료된 경우 변수 ans를 1로 초..

[G4] 백준 5631번 방사능 C++ 정렬, 기하학, 이분 탐색

리뷰 https://www.acmicpc.net/problem/5631두 원의 내접에 존재하지 않는 집의 수를 구하는 문제, 교집합은 2배로 처리해 준다.  전역 변수n : 집의 개수를 저장할 변수Pos : 집의 위치 x, y좌표를 정의할 구조체lst : 집의 위치들을 저장할 Pos타입 배열adists, bdists : a, b원자력 발전소로 부터 모든 집 까지의 거리를 저장할 배열 함수1. getDistdouble getDist(int x, int y, int tx, int ty) 원자력 발전소와 집의 거리를 구하는 함수매개 변수로 집의 좌표 x, y와 원자력 발전소의 좌표 tx, ty를 전달 받는다.((x - tx)^2 + (y - ty)^2)^1/2를 계산하여 리턴해 준다. 문제풀이변수 c를 0으로..

[P2] 백준 7469번 K번째 수 C++ 세그먼트 트리, 이분 탐색, 머지 소트 트리

리뷰 https://www.acmicpc.net/problem/74696달만에 다시 들어와본 문제인데 쿼리문에서 merge없이 답을 도출할 방법을 고민해 보았다.  전역 변수N : 배열의 최대 크기를 저장할 상수 변수lst : 요소의 정보를 저장할 배열tree : 세그먼트 트리 정보를 저장할 벡터 배열n : 배열의 크기를 저장할 변수m : 쿼리의 개수를 저장할 변수 함수1. buildvoid build(int node, int s, int e) 세그먼트 트리 정보를 초기화 하기 위한 함수매개 변수로 노드 정보 node, 탐색 범위 s, e를 전달 받는다.리프 노드에 도달했을 경우 각 요소의 값으로 초기화 해준다.좌, 우 자식 노드로 재귀를 호출하며 두 노드를 merge하여 현재 노드에 정렬된 상태로 저장..

[G5] 백준 1038번 감소하는 수 C++ 구현

리뷰 https://www.acmicpc.net/problem/1038n번째 감소하는 수를 찾는 문제  전역 변수없음  함수없음  문제풀이n값을 입력 받는다, n이 9이하일 경우 n을 출력하고, n이 1022보다 클 경우 -1을 출력하고 리턴한다.변수 cur을 9로 초기화 하고, 변수 s를 "10"으로 초기화 한다.cur을 전위증가시킨 값이 n보다 작을 경우 while 루프를 수행한다.매 루프마다 s의 크기를 변수 idx에 저장하고, idx를 후위 감소 시키는 while 루프를 수행한다.s의 idx가 '9'라면 변수 l을 s.size()+1로 저장한 후 s를 clear시켜준다.l-1부터 0까지 순회하며 s에 i + '0'을 통해 내림차순 문자열을 만든 후 break처리해 준다.만약 idx가 0이거나 s의..

[G5] 백준 2096번 내려가기 C++ 다이나믹 프로그래밍

리뷰 https://www.acmicpc.net/problem/2096메모리 제한이 4MB인 문제  전역 변수N : 행의 최대 길이를 저장할 상수 변수n : 행의 길이를 저장할 변수lst : 수 정보를 저장할 배열dp : 최소 및 최대값을 저장할 배열pre : 이전 dp값을 저장할 배열 함수없음  문제풀이n을 입력 받고, n * 3크기의 숫자를 입력 받아 lst배열에 저장한다.첫 행에 저장된 수를 dp배열에 초기화 해준다.1 ~ n - 1행을 순회하며 각 dp의 열에 저장된 값을 pre배열에 복사해 준다.다시 3개의 열을 순회하며 각각 이동할 수 있는 위치 중 최소값 및 최대값을 갱신해 준다.모든 탐색을 마친 후 dp배열의 0번 인덱스의 3열 중 가장 큰 값을 출력해 주고, 공백으로 구분해 준다.dp배열..

[G5] 백준 23747번 와드 C++ 플러드 필, 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/23747맵이 두개인 이세계 대환장 문제, 메타버스 느낌이 들어 재밌었다.  전역 변수n, m : 맵의 세로/가로 길이를 저장할 변수sx, sy : 초기 위치에서 이세계의 이동 좌표를 저장할 변수lst : 이세계 맵 정보를 저장할 배열orders : 한별이의 여행 기록을 저장할 변수ans : 현실세계 맵 정보를 저장할 배열v : 방문 정보를 저장할 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 플러드 필을 할 때 위치 정보 x, y를 정의할 구조체 함수1. floodfillvoid floodfill() 플러드 필을 통해 같은 그룹의 시야를 밝히기 위한 함수Pos타입의 큐 q를 초기화 하고, 현재 위치 sx, sy를 push해준다...

[G3] 백준 1941번 소문난 칠공주 C++ 백트래킹, 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/1941백트래킹을 통해 조합을 찾고, 해당 조합이 유효한지 검증하는 문제  전역 변수ans : 정답을 저장할 변수lst : 학생의 파를 저장할 배열choose : 선택한 학생번호를 저장할 벡터way : 갈 수 있는 학생인지 여부를 저장할 2차원 배열v : 방문했던 학생인지 여부를 저장할 2차원 배열pick : 선택한 학생인지를 저장할 벡터dx, dy : 4방향 탐색을 위한 방향 배열Pos : 위치 정보 x, y를 정의할 구조체 함수1. btvoid bt(int level, int cnt) 7명의 학생을 선택하는 조합을 찾는 함수매개 변수로 선택 가능한 학생의 시작 번호 level, 선택한 학생의 수 cnt를 전달 받는다.기저 조건으로 cnt가..

[G3] 백준 23084번 IUPC와 비밀번호 C++ 문자열, 슬라이딩 윈도우

리뷰 https://www.acmicpc.net/problem/23084암호화 조건을 반대로 생각해서 복호화 하는 논리적으로 접근하기 좋은 문제  전역 변수s, t : 비밀번호와 비밀번호 후보 문자열을 저장할 변수n : 후보 문자열이 주어지는 횟수를 저장할 변수sl, tl : 비밀번호와 비밀번호 후보 문자열의 길이를 저장할 변수sc : 비밀번호의 문자 개수를 저장할 배열tc : 비밀번호 후보의 문자 개수를 저장할 배열 함수1. chkbool chk() 비밀번호와 현재 완성된 비밀번호 후보의 개수 차이를 체크할 함수변수 diff를 0으로 초기화 하고, 각 문자의 개수 차이를 diff에 더해준다.diff의 차이가 2를 초과한 경우 false를, 아닌 경우 true를 리턴해 준다. 문제풀이s, n값을 입력 받..

[G4] 백준 30827번 회의실 배정 C++ 정렬, 멀티셋, 그리디 알고리즘

리뷰 https://www.acmicpc.net/problem/30827다시는 경험하고 싶지 않은 문제  전역 변수N : 회의의 수의 최대값을 저장할 상수 변수n : 회의의 개수를 저장할 변수k : 회의실의 개수를 저장할 변수ans : 정답을 저장할 변수P : 시작 시간 st와 종료 시간 et를 정의할 구조체, et가 같다면 st를, 아니라면 et를 기준으로 오름차순 정렬한다.lst : 회의의 정보를 저장할 P타입 배열 함수없음  문제풀이n, k값을 입력 받고, n개의 회의 정보를 입력 받아 lst배열에 저장해 준다.sort 메서드를 통해 lst배열을 operator 비교 함수를 통해 정렬을 진행해 준다.멀티셋 ms를 초기화 하고, 0을 k개 만큼 insert해준다.n개의 회의 정보를 순회하며 lower..

[P3] 백준 수열과 쿼리 20 C++ 트라이

리뷰 https://www.acmicpc.net/problem/16903트라이를 활용한 XOR문제  전역 변수MB : 비트의 상한값을 저장할 상수 변수Trie : 트라이 관련 구조체, 두 비트를 나타낼 child배열과 현재 노드의 개수 cnt를 정의한다. Trie의 생성자는 child와 cnt배열을 0으로 초기화 해준다. 소멸자는 자식 노드 포인터를 모두 delete해준다. 함수1. insertvoid insert(Trie* root, const string& str) 트라이에 비트 값을 추가할 함수매개 변수로 트라이의 루트 노드와 32개 비트 정보를 문자열로 입력 받는다.root부터 타고 내려가면서 bit정보를 저장해주고, 각 참조한 노드마다 cnt를 증가시켜 준다.만약 타고 내려가던 중 child가 ..

728x90