반응형

C++ 377

[S1] 백준 11403번 경로 찾기 C++ 플로이드 와샬, 최단 경로

리뷰 플로이드 와샬을 사용해 풀 수 있는 기초적인 문제https://www.acmicpc.net/problem/11403 전역 변수n : 인접 행렬의 한 변의 길이(노드의 개수) 함수없음  문제풀이n값을 입력 받고 거리를 저장할 2차원 정수 벡터 dist를 n * n크기로 초기화 한다.dist에 인접 행렬을 입력 받아준다, 이때 0이 입력 되었다면 1보다 큰 적절한 수로 변환해 준다.플로이드 와샬을 통해 3중  for문을 통해 갈 수 있으면서 1보다 큰 간선을 찾아 1로 변경해 준다.모든 작업을 마친 후 dist벡터 정보를 출력해 준다, 이때 1보다 큰 수라면 0으로 변환해서 출력해 주면 된다. 참고 사항정점 i에서 j로 가는 길이가 양수인 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 ..

[G4] 백준 11404번 플로이드 C++ 플로이드 와샬, 최단 경로

리뷰 노드의 개수가 적을 경우 고려할 수 있는 최단 경로를 구하는 방법인 플로이드 와샬을 사용하는 문제https://www.acmicpc.net/problem/11404 전역 변수MAX_D : 거리의 최대값 보다 크게 설정해줄 정수형 상수 변수, 10만 * 10만 이상으로 초기화 해주면 된다.n, m : 노드의 개수 n, 간선의 개수 mlst : 인접 리스트를 행렬으로 변환할 정수형 2차 배열, 행, 열을 노드의 최대 개수인 100보다 크게 설정해 준다.path : 인접 리스트를 저장할 벡터, 다음 노드, 간선 두개를 모두 저장해야 한다.dist : 특정 노드끼리의 거리를 저장할 정수형 2차 벡터 함수1. inputvoid input() 노드와 간선의 개수를 입력 받고 인접리스트와 인접 행렬을 초기화 해..

[G5] 백준 1759번 암호 만들기 C++ 백트래킹

리뷰 최소 한 개의 모음과 최소 두 개의 자음으로 구성된 정렬된 문자열의 암호를 찾는 문제https://www.acmicpc.net/problem/1759 전역 변수l, c : 암호의 길이 l, 암호로 사용했을 법한 문자의 종류 clst : 암호로 사용했을 법한 문자를 저장할 문자 배열, 크기는 16으로 초기화 한다.v : 방문 처리를 체크할 용도의 정수형 배열, 크기는 16으로 초기화 한다. 함수1. btvoid bt(int level, string cur, int ja, int mo) 백트래킹을 통해 암호가 될 수 있는 문자열의 조합을 찾아내는 함수매개변수로 재귀 단계 level, 현재의 문자열 cur, 자음의 개수 ja, 모음의 개수 mo를 전달받는다.c개의 문자열을 탐색해 준다, 만약 방문 처리가..

[G3] 백준 16954번 움직이는 미로 탈출 C++ 백트래킹

리뷰 각 단계별 맵과 현재 위치를 고려하여 목표 위치까지 이동할 수 있는지를 구하는 문제https://www.acmicpc.net/problem/16954 전역 변수lst : 초기 맵 정보를 저장할 문자열 벡터, 크기는 8로 설정한다.ans : 정답 정보를 저장할 정수형 변수v : 각 단계별 현재 위치에 대한 방문 정보를 저장할 3차원 정수형 배열, 8 * 8 * 8크기로 설정한다.dx, dy : 상하좌우, 대각선, 제자리를 고려한 방향배열Pos : 현재 위치를 나타낼 구조체 함수1. movingvoid moving(vector& map) 현재 맵에 존재하는 벽들을 모두 한칸씩 내려주는 시뮬레이션을 진행한다.맵의 아래서 부터 swap을 통해 각 행을 변경해 주고, 마지막에 0번행을 빈 칸으로 세팅해 준다..

[G3] 백준 2812번 크게 만들기 C++ 스택, 문자열, 그리디 알고리즘

리뷰 수를 문자열로 변환하여 스택을 활용한 그리디 문제이다.https://www.acmicpc.net/problem/2812 전역 변수lst : 숫자를 저장할 문자열 변수n, k, cnt : 숫자의 길이 n, 지울 숫자의 개수 k, 지운 숫자를 체크할 변수 cnt 함수없음  문제풀이n, k, lst값을 순서대로 입력 받아주고, 스택으로 사용할 문자타입 벡터 s를 초기화 해준다.n번의 반복문을 개행하고, s가 비지 않았고, s의 back이 현재 수보다 작으며, cnt가 k보다 작다면 문자열을 제거한다.문자열이 제거된 후에는 cnt를 증가시켜서 k와 비교를 해주어야 한다.위 작업이 끝난 후에는 스택에 현재 숫자(문자)를 추가해 준다.최종적으로 스택에 저장되어 있는 숫자(문자)를 한개씩 출력해 주면 된다. (..

[G5] 백준 6198번 옥상 정원 꾸미기 C++ 스택

리뷰 ans의 타입은 long long을 써야한다!!!!!!!!!!!https://www.acmicpc.net/problem/6198 전역 변수n, ans : 옥상의 개수 정보를 저장할 변수 n, 정답을 저장할 변수 ans, ans는 long long타입이어야 한다!!!!lst : 옥상 높이 정보를 저장할 정수형 배열, 8만보다 크게 설정해 주면 된다. 함수없음  문제풀이n값을 입력 받고 lst배열에 옥상의 높이 정보를 입력 받아준다.스택으로 사용할 정수형 벡터 s를 초기화 해준다, 벡터 말고 스택으로 사용해도 무방하다.현재 스택이 비지 않았고, 스택의 맨위 인자가 현재 옥상 높이보다 작으면 스택 맨위를 pop해준다.스택의 사이즈 만큼 ans에 더해주고, 스택에 현재 옥상 높이를 추가해 준다.반복문이 완..

[G5] 백준 2493번 탑 C++ 스택

리뷰 스택을 활용하여 O(N) 시간복잡도로 푸는 문제https://www.acmicpc.net/problem/2493 전역 변수n : 탑의 개수를 저장할 정수형 변수 nlst, ans : 탑의 정보를 저장할 정수형 배열 lst, 각 탑에서 본 결과를 저장할 정수형 배열 ans 함수없음  문제풀이n을 입력 받고 lst 배열에 n개의 탑 정보를 입력 받아준다.스택을 s로 초기화 해주고 다시 n개의 for문을 개행해 준다.스택이 비지 않았고, 스택의 top에 해당하는 인덱스의 탑 높이가 현재 탑보다 낮거나 같으면 pop을 해준다.위 작업을 마친 후 스택이 비어있다면 현재 인덱스의 ans는 0으로, 아니라면 스택의 top인덱스로 저장한다.현재 인덱스를 스택에 추가해 준다. 해당 작업을 계속 반복해 준다.반복문이..

[G5] 백준 11000번 강의실 배정 C++ 우선순위 큐

리뷰 우선순위 큐 두개를 사용해서 문제를 풀었다.https://www.acmicpc.net/problem/11000 전역 변수n, ans : 강의의 개수를 저장할 정수형 변수 n, 정답을 저장하고 출력할 정수형 변수 ansIng : 현재 진행중인 강의 정보를 저장할 구조체, 1순위로 종료시간, 2순위로 시작시간 오름차순 정렬해 준다.Stay : 아직 대기중인 강의 정보를 저장할 구조체, 1순위로 시작시간, 2순위로 종료시간 오름차순 정렬해 준다. 함수1. Ing Comparebool operator t를 기준으로 오름차순, t가 동일하다면 s를 기준으로 오름차순 정렬해 준다. 2. Stay Comparebool operator s를 기준으로 오름차순, s가 동일하다면 t를 기준으로 오름차순 정렬해 준다...

[G5] 백준 3980번 선발 명단 C++ 백트래킹, 브루트포스 알고리즘

리뷰 11명의 선수가 각 포지션의 최대 기량을 가질 수 있게 완전 탐색을 하는 문제https://www.acmicpc.net/problem/3980 전역 변수lst : 각 선수의 포지션별 기량 정보를 저장할 정수형 2차원 배열v : 방문 처리를 위한 정수형 배열tc, ans : 테스트케이스 수를 저장할 tc, 각 테스트 케이스마다 정답을 저장하고 출력할 ans 함수1. btvoid bt(int level, int sum) 완전 탐색에 사용할 함수 매개변수 level = 재귀 단계, sum = 현재 단계까지의 기량의 합이다.level은 재귀 단계이기도 하면서 현재 선수를 의미하기도 한다.따라서 level이 0일 경우엔 첫번째 선수의 11개 포지션에 대한 기량을 탐색한다.만약 0보다 클 경우 해당 선수를 해..

[G4] 백준 17298번 오큰수 C++ 스택

리뷰 스택을 활용하여 리스트의 뒤에서부터 순차적으로 순회하며 오큰수를 찾는 문제https://www.acmicpc.net/problem/17298 전역 변수없음  함수없음  문제풀이n을 입력 받고 수와 정답을 저장할 벡터lst, result의 크기를 n으로 초기화 해주고 n개의 수를 입력 받아 저장한다.스택을 초기화 해준 뒤에 n - 1부터 0번 인덱스 까지 lst를 반대로 순회해 줄것이다.스택이 비지 않았을 경우 스택의 제일 위 요소와 현재 값을 비교한다.스택의 제일 위 요소가 현재 값보다 작거나 같으면 스택에서 제거해 준다. 이 작업을 반복해 준다.위 작접이 완료된 후 만약 스택이 빈 상태라면 result의 현재 인덱스 값을 -1로 저장한다.만약 스택이 빈 상태가 아니라면 스택의 마지막 요소를 res..

728x90
반응형