반응형

C++ 351

[G4] 백준 2138번 전구와 스위치 C++ 그리디 알고리즘

리뷰 https://www.acmicpc.net/problem/2138스위치를 누르면 현재 위치와 양쪽 방향의 전구가 모두 반전된다.스위치를 적절히 눌러 시작 전구의 상태에서 목표 전구의 상태까지 도달하고, 그 최소 횟수를 출력하는 문제  전역 변수n : 주어지는 전구의 개수ans1, ans2 : 케이스를 1, 2로 나누어 스위치를 누른 횟수를 저장할 변수 함수1. togglevoid toggle(string& f, int idx) 스위치를 클릭할 경우 전구의 켜짐과 꺼짐을 관리할 함수매개변수로 변경할 문자열의 포인터 f, 변경할 인덱스 idx를 받는다.만약 idx가 n - 1일 경우 문자열의 끝이므로 idx -1, idx의 전구를 반전시킨다.아닐 경우 idx -1, idx, idx + 1의 전구를 반전..

[S4] 백준 2960번 에라토스테네스의 체 C++ 소수 판정, 에라토스테네스의 체

리뷰 https://www.acmicpc.net/problem/2960솔브닷 마라톤에 떠서 풀어본 문제 전역 변수n, k : 주어지는 정수의 범위 n, k번째 지워진 수를 찾기 위한 변수 kv : 이미 지워진 수를 방문처리 하기 위한 정수형 배열 함수없음  문제풀이n ,k를 입력 받고, 지워진 숫자의 개수를 체크하기 위한 정수형 변수 idx를 0으로 초기화 한다.2부터 n까지 for문을 한번 돌리고, i부터 n까지 for문을 한번 더 돌려준다. 이때 증가값은 i여야 한다.만약 j가 이미 방문했던 정수라면 continue 처리를 해준다.방문하지 않은 정수라면 j에 방문처리를 해주고, idx를 증가시킨다.idx가 k에 도달했다면 j를 출력해주고 main 함수를 리턴 해준다. 참고 사항없음  정답 코드#inc..

[G4] 백준 9935번 문자열 폭발 C++ 문자열, 스택

리뷰 https://www.acmicpc.net/problem/9935알고리즘 분류를 보지 않고 풀었을 때는 string STL의 find + replace를 사용했었다.결과는 46%에서 멈추더니 시간 초과를 출력해냈다. replace메서드가 시간을 많이 잡아먹는다 하더라결국 스택으로 돌리고 구현을 했더니 이번엔 stack.size()가 문제였다.for문에 size를 사용할땐 왠만하면 정수형으로 치환한 후에 사용하도록 하자.. 전역 변수s, b : 탐색을 진행할 문자열 s, 폭발을 일으킬 문자열 bn, m : 문자열 s의 길이 n, 문자열 b의 길이 mstack : 스택으로 사용할 문자형 벡터 함수1. chkbool chk() 현재 스택에 폭발할 문자열이 있는지 여부를 체크하는 함수idx는 0, len은..

[G4] 백준 13144번 List of Unique Numbers C++ 투 포인터

리뷰 https://www.acmicpc.net/problem/13144 투 포인터로 포인터를 옮겨가며 방문처리를 하고 두 포인터 위치의 차이를 더해주는 문제최악의 케이스의 경우 int의 범위를 넘어가므로 long long타입으로 ans를 지정해 주어야 한다.  전역 변수n : 수열의 길이를 저장할 변수nodes : 수열 정보를 저장할 변수v : 각 수를 방문처리할 변수, 최대 10만이 들어오므로 그거보다 크게 세팅해 준다. 함수없음  문제풀이n값을 입력 받고, n개의 수를 nodes배열에 입력받아 준다.두 포인터 l, r을 0으로 초기화 해주고, 정답 변수 ans를 0으로 초기화 해준다.r이 n범위 내에 있을때 동안 반복문을 실행해 준다.만약 현재 r포인터가 있는 수가 방문하지 않았다면 ans에 r -..

[G4] 백준 2179번 비슷한 단어 C++ 문자열, 브루트포스 알고리즘

리뷰 https://www.acmicpc.net/problem/2179트라이로 문제를 접근했는데 모든 예제가 다 맞아도 계속 AC를 받지 못하였다.브루트포스 알고리즘을 사용하면 최대 2만 * 2만 / 2의 연산이 진행되고 시간 제한이 2초이므로 시도해 보았는데 해당 방법으로 AC를 받았다.풀고도 찝찝한 문제... 전역 변수n : 문자열의 개수를 저장할 정수형 변수max_len : 탐색 중 접두사의 최대 길이를 저장할 정수형 변수a1, a2 : 최대 길이의 접두사를 가진 문자열의 인덱스를 저장할 정수형 변수str : 문자열 정보를 저장하기 위한 문자열 타입의 배열, 최대 크기는 2만이다. 함수없음  문제풀이n값을 입력 받고, n개의 문자열을 str배열에 입력 받아준다.0 ~ n - 2, i + 1 ~ n ..

[G3] 백준 22866번 탑 보기 C++ 스택

리뷰 https://www.acmicpc.net/problem/22866현재 위치에서 볼 수 있는 탑의 개수와 볼 수 있는 탑 중 가장 가깝운 탑의 인덱스를 출력하는 문제스택을 앞 뒤로 훑어주고, 볼 수 있는 탑이 있다면 가장 가까우면서 같다면 사전순으로 앞서는 탑을 기록해 준다. 전역 변수n : 주어지는 탑의 개수를 저장할 변수nodes : 탑의 높이 정보를 저장하기 위한 정수형 배열 크기는 10만 1보다 크게 해준다.cnt : 각 위치에서 볼 수 있는 탑의 개수를 저장하기 위한 정수형 배열, 크기 상동idx : 각 위치에서 볼 수 있는 탑 중 가장 가까운 탑의 인덱스를 저장하기 위한 정수형 배열, 크기 상동 함수없음  문제풀이n을 입력 받고, 1 ~ n번의 탑의 높이를 nodes배열에 입력 받고, 각..

[G3] 백준 14658번 하늘에서 별똥별이 빗발친다 C++ set, 브루트포스 알고리즘

리뷰 https://www.acmicpc.net/problem/1465850만 * 50만 맵에서 L * L크기의 범위에 최대한 많은 별을 넣는 문제 전역 변수n, m : 맵의 x좌표의 크기 n, y좌표의 크기 ml : 별을 담기 위한 정사각형의 한 변의 길이k : 주어지는 별똥별의 개수ans : 정답을 출력하기 위한 변수, 최대한 큰 값으로 설정한다.Star : 주어진 별똥별 x, y좌표 정보를 저장하기 위한 구조체xdic : 별똥별의 x좌표를 저장하기 위한 setydic : 별똥별의 y좌표를 저장하기 위한 set 함수없음  문제풀이n, m, l, k 값을 입력 받고, Star구조체 벡터 stars를 초기화 해준다.별똥별의 개수 k개를 입력 받고, stars구조체에 넣어준다, 이때 x, y좌표를 각각 x..

[G3] 백준 24337번 가희와 탑 C++ 구현, 그리디 알고리즘, 해 구성하기

리뷰 https://www.acmicpc.net/problem/24337왼쪽 끝과 오른쪽 끝에서 볼 수 있는 건물의 개수가 주어지고, 그 중 건물의 높이를 오름차순으로 정렬했을때 가장 앞에 있는 경우의 건물 높이를 출력해 주는 문제구현 노가다로 AC를 받았는데 질문게시판의 반례를 많이 참고했다. 전역 변수n, a, b : 건물의 개수 n, 가희가 볼 수 있는 건물의 개수 a, 단비가 볼 수 있는 건물의 개수 b 함수없음  문제풀이n, a, b값을 입력 받고, 건물 높이를 출력할 정수형 벡터 result를 초기화 해준다.temp를 n - a - b + 1로 초기화 해준다, 이는 볼 수 없는 건물은 모두 1로 처리해주기 위함이다.오름차순으로 출력해야 하는 문제로 a가 b보다 크거나 같거나 b가 더 큰 경우를..

[S1] 백준 2531번 회전 초밥 C++ 슬라이딩 윈도우, 덱

리뷰 https://www.acmicpc.net/problem/2531회전 초밥의 라인을 돌려가며 먹을 수 있는 초밥의 가짓수의 최대를 구하는 문제N * k 는 9천만이라 쉽게 AC가 날 줄 알앗는데 덱 + set만으로 구현을 하니 시간초과가 났다  전역 변수n : 주어지는 초밥의 개수d : 주어지는 초밥의 최대 가짓수k : 먹을 수 있는 초밥의 개수c : 추가로 얻을 수 있는 초밥의 정보ans : 먹을 수 있는 초밥의 최대 가짓수를 저장할 변수v : 먹은 각 초밥의 개수를 저장하기 위한 배열 함수없음  문제풀이n, d, k, c를 입력 받아주고 정수형 덱 deq를 초기화 해준다.n개의 초밥 정보를 deq에 추가해 준다.cnt를 0으로 초기화 하고, 처음 0 ~ k - 1개의 초밥을 먹은 상태로 만들어준..

[S1] 백준 17615번 볼 모으기 C++ 그리디 알고리즘

리뷰 https://www.acmicpc.net/problem/17615일직선상에 놓여 있는 볼에 관한 정보가 주어질 때, 규칙에 따라 볼을 이동하여 같은 색끼리 모으되 최소 이동횟수를 찾는문제... 근데... 문제가... 좀 이상하다.. 이게 맞는가 싶은데 맞네  전역 변수n : 공의 개수를 입력 받을 정수형 변수cnt : 각 케이스 마다 공을 이동할 횟수를 저장할 변수s : 공의 정보를 입력 받을 문자열 변수 함수없음  문제풀이n, s값을 입력 받고, 각 케이스마다 cnt 개수를 저장할 정수형 벡터 ans를 초기화 해준다.매 케이스마다 cnt를 0으로 초기화 해주고, B기준 양쪽, R기준 양쪽 총 4번의 케이스를 탐색해 준다.R이 기준이라면 for문을 통해 최초로 B가 나올때를 찾고, 해당 인덱스부터..

728x90
반응형