반응형

C++ 347

[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() ..

[P5] 백준 3015번 오아시스 재결합 C++ 스택, 해시맵

리뷰 https://www.acmicpc.net/problem/3015만만치 않은 스택 문제였다, 메모장을 키고 여러가지 케이스를 대입하고 나서야 풀린 문제풀고 나서 친구와 코드 리뷰를 해보니 내 코드는 딱히 좋은 풀이 방법은 아니였다.굳이 unordered_map을 사용하지 않고, 스택을 pair로 관리하여 cnt를 관리하는 최적화가 있으니 참고하길 바란다. + ans만 long long타입으로 해도 된다, 난 귀찮아서 모두 long long으로 해서 메모리가 꽤 커졌다.  전역 변수n : 주어지는 정수의 개수nodes : 정수를 저장하기 위한 배열cnt : 스택 상에 존재하는 정수의 개수를 표시하기 위한 해시맵stack : 스택 함수없음  문제풀이n을 입력 받고, n개의 정수를 nodes배열에 입력 ..

728x90
반응형