시뮬레이션 22

[G2] 19236번 청소년 상어 C++ 백트래킹, 시뮬레이션, 구현, 재귀

리뷰 문제 이해에도 시간이 많이 걸리고 구현과 시뮬레이션 디버깅에도 다소 시간이 걸렸으나 한번에 풀긴 했다.https://www.acmicpc.net/problem/19236 전역 변수dx, dy : 8방향 탐색을 위한 방향 배열v : 이미 잡아먹힌 물고기를 방문처리 하기 위한 배열max_val : 잡아먹은 물고기의 번호 최대값을 저장하기 위한 변수sdir : 최초에 잡아먹은 물고기가 갖고 있던 방향 정보를 저장하기 위한 변수Fish : 물고기의 위치와 진행 방향을 저장하기 위한 구조체fishes : 초기 물고기들의 위치와 방향 정보를 저장할 Fish타입 벡터lst : 초기 맵에 존재하는 물고기 번호를 저장하기 위한 4 * 4크기의 정수형 벡터 함수1. inputvoid input() 4 * 4사이즈의 ..

[G2] 백준 2871번 아름다운 단어 C++ 그리디 알고리즘, 우선순위 큐, 구현

리뷰 그리디한 방법을 설계하여 알아서 문제를 푸는 구현문제인듯 하다.https://www.acmicpc.net/problem/2871 전역 변수n : 주어진 문자열의 길이v : 현재 상황에서 문자열이 존재하는지 체크하기 위한 배열 크기는 최대 문자열 크기인 10만으로 초기화 한다.s, t1, t2 : 입력되는 초기 문자열 s, 상근이의 문자열 t1, 희원이의 문자열 t2Prio : 원하는 단어를 얻기 위한 우선순위 큐용 구조체pq : 희열이가 사용할 우선순위 큐, 문자 기준 오름차순, 같다면 인덱스 기준 내림차순 정렬을 하였다. 함수없음  문제풀이n과 s값을 입력받은 뒤 0부터 n - 1까지 순회해준다.v배열을 모두 1로 변경해 주고 pq에는 문자와 해당 문자의 인덱스를 추가해 준다.상근이가 문자열을 가..

[D2] SWEA 22654번 차윤이의 RC카 C++ 구현, 시뮬레이션

리뷰 RC카의 움직임을 각 쿼리문으로 제어하고 최종 위치가 목적지인지 확인하는 문제 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 전역변수tc : 테스트 케이스의 개수n, q : 맵의 한 변이 길이 n, RC카를 조종하는 횟수의 개수 qsx, sy, dx, dy : 시작 위치와 도착 위치의 x, y 좌표lst : 맵 정보, 문자열로 입력받으며 최대 5 * 5의 크기dx, dy : 상하좌우로 이동할 방향 배열, 0번 인덱스부터 3번인덱스까지 북동남서 방향으로 세팅한다. 함수1. inputvoid input() 한 변의 개수를 입력 받고 n * n의 맵 정보를 입력 받아준다.위치가 X일 경우 시작 위치의 좌표를 sx..

[P3] 백준 12094번 2048 (Hard) C++ 백트래킹, 브루트포스 알고리즘, 구현, 시뮬레이션

리뷰 2048(Easy)의 어려운 버전, 재귀의 깊이가 기존 5에서 10으로 늘어났다. [G1] 백준 12100번 2048 (Easy) C++ 백트래킹, 구현, 시뮬레이션, 브루트포스 알고리즘리뷰 2048게임을 구현하는 문제, 시뮬레이션만 잘 작성하면 쉽게 풀 수 있으나 문제를 잘 읽어보아야 할듯 하다.https://www.acmicpc.net/problem/12100 문제 풀이전역 변수n : 맵의 행, 열을 저장할 변수anszzzz955.tistory.com 가지치기를 최소 두개를 추가해 줘야 시간 초과를 막을 수 있는 문제인 듯https://www.acmicpc.net/problem/12094 전역 변수n, ans : 맵의 행과 열의 길이를 저장할 정수형 변수 n, 최대값을 저장할 변수 ansmap ..

[G1] 백준 12100번 2048 (Easy) C++ 백트래킹, 구현, 시뮬레이션, 브루트포스 알고리즘

리뷰 2048게임을 구현하는 문제, 시뮬레이션만 잘 작성하면 쉽게 풀 수 있으나 문제를 잘 읽어보아야 할듯 하다.https://www.acmicpc.net/problem/12100 문제 풀이전역 변수n : 맵의 행, 열을 저장할 변수ans : 최대값을 저장하기 위한 변수map : 맵 정보를 입력받을 2차원 정수형 벡터 n값을 입력 받고 map을 n * n크기로 초기화 해준 뒤 맵의 정보을 입력 받아준다.dfs를 통해 상하좌우로 미는 작업을 완전 탐색으로 구현해 준다, 매개변수는 시도한 횟수 level과 맵을 참조한다.기저 조건으로 level이 5에 도달하면 5번 작업을 한 상태이므로 맵을 체크하여 최대 값을 갱신해 준다.4방향으로 탐색을 하며 상하좌우로 맵을 미는 작업을 한 후에 재귀를 실행해 준다.이때..

[G4] 백준 2239번 스도쿠 C++ 백트래킹, 구현

리뷰 문제를 제대로 읽지 않아 대각선까지 일치해야 하는줄 알았다.처음엔 해쉬 + Find를 통해 풀어야 하나 고민했는데 깊게 생각하지 않고 열, 행, 그룹으로 방문처리 하며 재귀를 사용하면 된다. 너무 어렵게 생각하지 말자https://www.acmicpc.net/problem/2239 문제 풀이전역 변수lst : 맵 정보를 나타낼 정수형 2차 배열cnt : 맵에 남아있는 0의 개수를 체크할 변수flag : 스도쿠 퍼즐이 완성되었는지 체크할 변수cols : 현재 행 기준 모든 열의 방문처리를 체크할 정수형 2차 배열rows : 현재 열 기준 모든 행의 방문처리를 체크할 정수형 2차 배열groups : 3*3 크기의 그룹 내의 방문처리를 체크할 정수형 3차 배열 9 * 9 크기의 for문을 개행해 준다 처..

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

리뷰 설계를 하지 않고 무작정 덤볐다가 호되게 당한 문제, 구현과 시뮬레이션은 둘째치고 생각 못하고 있던 조건들이 많아서 애를 먹었다, 해당 문제를 풀기 전에 문제에 대한 조건을 한번 쭉 정리하는걸 추천한다.https://www.acmicpc.net/problem/13460 문제 풀이전역변수n, m : 2차원 맵 상 행과 열의 크기를 저장할 변수sx1, sy1, sx2, sy2 : 빨간색 구슬과 파란색 구슬의 x, y좌표를 저장할 변수lst : 맵 정보를 저장할 문자열 배열, 최대 크기가 10이므로 10만큼의 크기를 지정해 주었다.v : 방문 처리를 할 4차원 정수 배열, 각각의 요소에 sx1, sy1, sx2, sy2의 위치 저장, 맵의 크가보다 1크게 초기화dx, dy : 4방향 탐색을 위한 방향 배..

[G5] 백준 16935번 배열 돌리기 3 C++ 구현, 시뮬레이션

리뷰 배열을 돌리는 정석적인 문제 90도 회전과 상하, 좌우 반전 배열 그룹화 등이 포함되어 있다.https://www.acmicpc.net/problem/16935 달팽이 처럼 배열을 돌리는 문제보단 난이도가 쉬운 편인 것 같다.아래는 달팽이 처럼 배열을 순회하며 돌리는 문제 백준 17406번 배열 돌리기4 C++ 백트래킹, 구현, 시뮬레이션리뷰 완전 탐색을 통해 배열을 돌리는 경우의 수를 모두 실행하고 최적값을 찾는 문제회전을 하는 횟수인 k의 범위가 6으로 작아서 완전 탐색을 돌려도 시간이 크게 많이 걸리지는 않았다. httpszzzz955.tistory.com 문제 풀이행정보를 나타낼 변수 n, 열정보를 나타낼 변수 m, 회전 요청의 개수 r과 정수형 2차배열 lst를 전역변수로 세팅한다.inpu..

백준 12919번 A와 B 2 C++ 백트래킹, 재귀, 문자열

리뷰 시작 문자열이 특정 조건을 가진 문자열을 더해 도착 문자열로 변할 수 있는지 여부를 체크하는 문제https://www.acmicpc.net/problem/12919 문제 풀이문자열 a와 b를 입력 받고, b의 크기에서 a크기를 뺀 값을 limit으로 저장한다. 이는 백트래킹의 기저조건이 될 값이다.변수 flag를 0으로 초기화 하고 함수 bt에 매개변수 0을 전달하여 백트래킹을 시작한다. 이때 0은 재귀 단계를 나타낸다.백트래킹의 기저조건은 flag가 1일때와 level이 limit에 도달했을 때다, 이는 둘의 문자열의 길이가 동일할때를 의미한다.문자열 a에서 b로 가는 재귀 말고, 문자열 b에서 a로 가는 재귀를 실행해 줄 것이다.만약 문자열 b의 앞이 B라면 문자열을 뒤집은 후 맨 뒤의 B를 삭..

SWEA 5648번 [모의 SW 역량테스트] 원자 소멸 시뮬레이션 C++ 구현, 시뮬레이션

리뷰 방향 배열을 사용한 전형적인 시뮬레이션 문제 문제 풀이전역변수로 원자의 개수 n, 남은 원자의 개수 cnt, 정답을 출력할 ans, 맵 배열 lst, 방향 배열을 설정해 주었다.좌표의 범위는 -1000 ~ 1000이지만 -인덱싱을 방지하기 위해 +1000을 해준다.추가로 원자가 만나지 않고 지나치는 경우를 방지하기 위해 *2를 해준다. 즉, 좌표의 범위는 4000 * 4000이다.원자의 정보를 담을 구조체 Atom과 위치를 나타낼 구조체 Pos를 만들고 원자 벡터 atoms를 초기화해 주었다.init 함수를 통해 cnt, ans를 0으로 초기화 하고 atoms배열 및 맵 정보를 테케마다 초기화 해준다.input 함수를 통해 n값을 입력 받고 n개의 원자 정보를 atoms 벡터에 추가해 준 뒤 맵에 ..

728x90