알고리즘 공부/C++ 528

[G5] 백준 1584번 게임 C++ 너비 우선 탐색, 우선순위 큐

리뷰 https://www.acmicpc.net/problem/15840, 0에서 500, 500까지 생명이 최소로 깎인 상태로 이동하는 문제다익스트라로 구현할까 했지만 그냥 기저 조건에 도달하면 바로 리턴하는게 좋을 것 같아 bfs를 돌렸다.  전역 변수n : 위험 구역의 개수를 저장할 변수m : 죽음 구역의 개수를 저장할 변수lst : 맵 정보를 저장할 정수형 2차 배열v : 방문 정보를 저장할 논리형 2차 배열dx, dy : 4방향 탐색을 하기 위한 방향 배열 함수1. bfsint bfs() 너비 우선 탐색을 사용해 시작 위치부터 목표 위치까지 생명을 가장 조금 사용하여 도착하는 경우를 구하는 함수Pos타입의 우선순위 큐 q를 초기화 해주고, 초기값 0, 0, 0을 넣어준다.v배열에 시작 좌표인 0..

[G2] 백준 1365번 꼬인 전깃줄 C++ 이분 탐색, LIS

리뷰 https://www.acmicpc.net/problem/1365lower_bound를 사용하여 가장 긴 증가하는 부분 수열을 구하는 문제  전역 변수n : 전봇대의 개수를 저장할 변수ans : 정답을 저장할 변수 함수없음  문제풀이정수형 벡터 lis를 초기화 해준다.n값을 받아 주고, n번의 while루프를 수행해 준다.매 루프마다 정수형 변수 num에 오른편 전봇대의 위치를 받아준다.lower_bound 함수를 통해 lis에서 num이상인 값의 이터레이터를 it에 저장해 준다.it이 lis의 end라면 lis에 num을 push해준다.아니라면 ans를 증가시키고, it의 위치의 값을 num값으로 변경해 준다. 트러블 슈팅없음  참고 사항없음  정답 코드#include#include#include..

[G1] 백준 13459번 구슬 탈출 C++ 구현, 시뮬레이션, 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/13459오랜만에 풀어본 진또배기 구현 및 시뮬레이션 문제, 코드 길이만 282줄이다. 이 문제는 유사 문제가 존재한다.[G1] 백준 13460번 구슬 탈출 2 C++ BFS, 구현, 시뮬레이션, 너비 우선 탐색 [G1] 백준 13460번 구슬 탈출 2 C++ BFS, 구현, 시뮬레이션, 너비 우선 탐색리뷰 설계를 하지 않고 무작정 덤볐다가 호되게 당한 문제, 구현과 시뮬레이션은 둘째치고 생각 못하고 있던 조건들이 많아서 애를 먹었다, 해당 문제를 풀기 전에 문제에 대한 조건을 한번 쭉zzzz955.tistory.com  전역 변수n : 맵의 세로 길이를 저장할 변수m : 맵의 가로 길이를 저장할 변수lst : 맵 정보를 저장하기 위한 문자열..

[G1] 백준 17143번 낚시왕 C++ 구현, 시뮬레이션, 우선순위 큐

리뷰 https://www.acmicpc.net/problem/17143상어가 다른 상어를 잡아먹으면 잡아먹은 상어만큼 몸집이 커지는 줄 알았다...오히려 더 어렵게 생각해서 한번 Fail을 받은 문제  전역 변수r : 맵의 세로 길이를 저장할 변수c : 맵의 가로 길이를 저장할 변수m : 상어의 개수를 저장할 변수ans : 정답을 저장할 변수lst : 맵 정보를 저장하기 위한 정수형 2차 배열dx, dy : 4방향 탐색을 하기 위한 방햘 배열Shark : 상어의 정보를 정의한 구조체, 상어의 번호 index, 위치 x, y, 속도 s, 방향 d, 크기 z를 저장하고, 상어의 크기 z를 기준으로 내림차순 정렬하는 비교 함수를 갖는다.sharks : 상어의 정보를 저장할 Shark타입의 배열 함수1. in..

[G1] 백준 11689번 GCD(n, k) = 1 C++ 정수론, 오일러 피 함수

리뷰 https://www.acmicpc.net/problem/11689출근시간 유튜브로 오일러 피 함수에 대해 공부하여 푼 문제 수학자들은 참 위대한 것 같다.  전역 변수없음  함수없음  문제풀이long long타입의 변수 n에 값을 입력 받고, long long타입의 변수 ans에 n값을 저장한다.long long타입의 변수 p를 2로 초기화 한다.n의 양의 제곱근이 p보다 크거나 같을 경우 while루프를 수행한다.n을 p로 나눈 나머지가 0일 경우 더 이상 나눠질 수 없을 때 까지 n에서 p를 나누어 준다.ans에 ans를 p로 나눈 몫 * p - 1만큼의 값을 저장해 준다.p를 증가시켜 준다.루프가 종료된 후 n값이 1보다 클 경우 ans에 ans를 n으로 나눈 몫 * n - 1만큼의 값을 저..

[P4] 백준 5670번 휴대폰 자판 C++ 트라이, 메모리 풀

리뷰 https://www.acmicpc.net/problem/5670구현까지는 금방 했지만 메모리풀을 구현하지 않아 틀린 문제메모리 풀의 크기를 메모리 제한에 맞게 적당히 설정하였더니 AC를 받았다.  전역 변수n : 단어의 개수를 저장할 변수idx : 할당한 메모리 풀의 개수를 저장할 변수Trie : 트라이를 구현하기 위한 구조체, 트라이 배열 child와 배열 내 null이 아닌 크기 cnt를 갖는다.memory : 메모리 풀을 구현하기 위한 Trie 주소값 타입의 배열lst : 주어진 단어를 저장하기 위한 문자열 배열 함수1. insertvoid insert(Trie* root, const string& str) 트라이에 단어를 삽입하기 위한 함수매개변수로 Trie의 루트 주소값과 삽입할 문자열을..

[S1] 백준 2468번 안전 영역 C++ 너비 우선 탐색, 플러드 필

리뷰 https://www.acmicpc.net/problem/2468비가 내리면 지역이 물에 잠기고 잠기지 않은 영역의 개수가 가장 많은 경우를 구하는 문제  전역 변수n : 정사각형 맵의 한 변의 길이를 저장할 변수ans : 정답을 저장할 변수v : 방문 처리를 체크하기 위한 논리형 2차 배열H : 지역의 값을 저장하기 위한 트리맵Pos : 시뮬레이션 시 좌표를 체크하기 위한 구조체, x, y좌표를 정의한다.dx, dy : 4방향 탐색을 위한 방향 배열 함수1. bfsvoid bfs(int sx, int sy, const vector>& temp) 플러드 필을 통해 연결된 구역을 잇기 위한 함수매개변수로 시작 좌표인 sx, sy와 높이 제한 h를 전달 받는다.Pos타입의 큐 q를 초기화 하고, 초기 ..

[P5] 백준 15678번 연세워터파크 C++ 덱, 덱을 이용한 다이나믹 프로그래밍

리뷰 https://www.acmicpc.net/problem/15678처음엔 우선순위 큐를 활용한 로직을 구현하였으나, 제출할 때 마다 엣지케이스가 존재해 Fail을 받았다.이후 덱을 사용한 최적화를 진행하여 AC를 받게 되었다.이 과정에서 int타입으로는 받을 수 없는 결과가 존재함을 알게 되었다.우선순위 큐를 활용해 그리디하게 접근해도 괜찮을 듯 싶다만 덱이 가장 최적화된 답을 도출할 것 같다.  전역 변수n : 징검다리의 개수를 저장할 변수d : 건널 수 있는 범위를 저장할 변수lst : 징검다리에 표시된 값을 저장할 정수형 배열 함수없음  문제풀이n, d에 값을 입력 받고, n개의 징검다리 정보를 lst배열에 입력 받아 준다.pair타입의 덱 deq를 초기화 한다.징검다리를 순회하며 덱이 비지 ..

[G4] 백준 13397번 구간 나누기 2 C++ 이분 탐색, 매개 변수 탐색

리뷰 https://www.acmicpc.net/problem/13397파라매트릭 서치의 기본이 되는 문제  전역 변수n : 배열의 크기를 저장할 변수m : 구간의 개수를 저장할 변수ans : 정답을 저장할 변수lst : 배열 정보를 저장할 정수형 배열 함수없음  문제풀이n, m값을 입력 받고, lst배열에 n개의 배열 요소를 입력받아 준다.l을 0, r을 10000으로 초기화 해주고 l이 r보다 이하일 경우 while루프를 반복해 준다.정수형 변수 mid를 l + r을 2로 나눈 값으로 저장해 준다.구간의 개수 cnt를 1로, 최대 및 최소값 MAX, MIN을 lst배열의 첫 인자로, diff를 MAX-MIN값으로 초기화 한다.배열의 두번째 요소부터 마지막 요소까지 for문을 통해 순회해 준다.현재 요..

[G3] 백준 10423번 전기가 부족해 C++ 최소 신장 트리, 유니온-파인드, 정렬

리뷰 https://www.acmicpc.net/problem/10423오랜만에 풀어본 MST문제, 이미 그룹화 된 정보가 주어졌을 때의 MST의 기본적인 문제이다.  전역 변수n : 도시의 개수를 저장할 변수m : 설치 가능한 케이블의 수를 저장할 변수k : 발전소의 개수를 저장할 변수nodes : 그룹화를 저장하기 위한 정수형 배열Edge : 간선의 정보를 나타낼 구조체, 현재 노드 cn, 다음 노드 nn, 가중치 w로 정의하며 가중치 기준 오름차순 정렬 함수1. Findint Find(int a) 현재 노드가 어느 그룹에 속해있는지를 찾기 위한 함수매개변수로 노드 번호 a를 전달받는다.기저 조건으로 만약 a가 속한 그룹이 a 자신일 경우 a를 리턴해 준다.아닐 경우 a가 속한 그룹이 최신이 되도록 ..

728x90