반응형

알고리즘 공부/C++ 387

[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 : 각 블럭의..

[G5] 백준 21608번 상어 초등학교 C++ 구현

리뷰 https://www.acmicpc.net/problem/21608빡구현 문제.. 설계를 초반에 잘 하고 넘어가야 코드 수정하는 일이 적어질 것 같다.for문, while문의 지옥을 맛본 문제  전역 변수n : 주어지는 공간의 한 변의 길이lst : 주어지는 2차원 공강을 저장하기 위한 정수형 2차 배열dx, dy : 상하좌우 탐색을 위한 방향 배열friends : 좋아하는 친구 번호를 저장하기 위한 정수형 벡터 배열Pos : 각 학생의 존재 여부와 좌표를 저장하기 위한 구조체poses : 학생 번호를 인덱스로 관리하기 위한 Pos타입 배열Prio : 학생을 배치할 때 우선순위로 사용하기 위한 구조체, 주변 친구의 수 c순으로 내림차순, 주변 빈칸의 수 e순으로 내림차순, 행 번호 x순으로 오름차순..

[G4] 백준 17144번 미세먼지 안녕! C++ 구현, 시뮬레이션

리뷰 https://www.acmicpc.net/problem/17144간만에 풀어보는 100줄 이상 되는 구현 문제  전역 변수r, c, t : 행의 크기 r, 열의 크기 c, 공기 청정기를 작동할 횟수 tlst : 맵의 상태를 저장하기 위한 2차 정수 배열dx, dy : 공기 청정기 및 미세 먼지 확산 시뮬레이션을 위한 방향 배열Air : 공기 청정기의 위치를 표시하기 위한 구조체cleaner : 공기 청정기 위치를 저장하기 위한 Air타입 배열Dust : 맵에 존재하는 미세먼지 정보를 표시하기 위한 구조체 함수1. inputvoid input() 변수 및 맵 정보와 공기 청정기 정보를 입력받고 저장하기 위한 함수r, c, t를 입력 받고 공기 청정기의 인덱스로 사용할 정수형 변수 idx를 0으로 초..

[D4] SWEA [S/W 문제해결 기본] 2일차 - Ladder1 C++ 구현, 시뮬레이션, 브루트포스 알고리즘

리뷰  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com진짜 맞왜틀을 엄청 외쳤는데 진짜 맞왜틀이였다, SWEA의 기본 문제들 처럼 테스트케이스의 개수가 주어지는 것이 아닌, 테스트 케이스는 10개 고정이고 각 문제의 번호가 맵 입력 전에 주어지는 구조였다.첫 번째 케이스만 맞고 나머지가 오답 처리가 된다면 꼭 Input파일을 다운받아 한번 확인해 보길 바란다.  전역 변수t : 각 문제의 번호를 입력 받을 변수lst : 맵 정보를 입력 받아 저장할 정수형 2차 배열v : 가로 선을 만나 꺾인 경우의 방문 처리를 위한 정수형 3차 배열dy : 좌우로 이동하기 위한 방향 배열 함수1. inputvoid input() ..

728x90
반응형