백준1918 후위 표기식
SW/알고리즘 문제풀이 2020. 2. 17. 11:54

2020.02.17 백준1918 / 후위 표기식 풀이 order : 계산에 필요한 연산기호, 문자의 우선순위를 저장하는 딕셔너리 calculator : ( 가 나오면 push, 문자가 나오면 push, 연산기호들이 나오면 연산기호의 우선순위가 낮은 녀석들(문자포함)을 스택에서 pop해서 결과에 저장하고 현재 연산기호 push(단, ) 는제외) 코드 (python) inputData = input() myStack = [] top = -1 order = {'(' : 4, ')' : 4,'+': 3, '-': 3, '*': 2, '/': 2} for i in range(26): order[chr(i + ord('A&..

백준17070 파이프 옮기기 1
SW/알고리즘 문제풀이 2020. 2. 17. 11:08

2020.02.17 백준17070 / 파이프 옮기기 1 풀이 알고리즘 : 완전탐색 전역변수 inMap : 주어진 input map checkMap : 파이프를 밀면서 파이프가 갈 수 있는 곳인지 없는지 표시해둠 함수 checkNext : dir과 y,x를 이용해서 다음 칸이 맵의 범위 내에 있는지 & 파이프가 갈 수 있는 곳인지 확인하는 함수 getResult : 이전 dir과 y,x를 이용해 갈 수 있는 모든 다음 y,x로 이동하고 도착점에 도착하는 경우의 수를 세어 리턴하는 함수 파이프의 머리를 이용해 다음 갈 수 있는 칸을 탐색하고 이동하는 완전탐색을 통해 모든 경우의 수 중 가능한 경우의 수를 세도록 구현하였다. 코드 //! 2020.02.17 // TODO BJ17070_파이프옮기기1 #incl..

백준17406 배열돌리기4
SW/알고리즘 문제풀이 2020. 2. 16. 22:56

2020.02.16 백준17406 / 배열돌리기4 풀이 알고리즘 : 완전탐색 + Simulation 전역변수 inMap : 초기 배열 A 상태 nextMap : 경우의 수에 따라 회전을 진행한 배열 A rotateOrder : K번의 회전을 수행할 때 0 ~ K-1 번째 회전 index를 저장하는 변수 checkRotate : 순열을 재귀함수로 구현할 때 이미 사용한 index인지 체크하는 변수 rotateInfo, rotateSize : r,c,s로 주어지는 회전정보들을 0 ~ K-1 번에 저장하는 변수 함수 getMin : 배열A의 최소 크기를 계산하면서 nextMap을 처음 inMap으로 초기화하는 함수 getResult : n번~K-1번의 회전정보를 결정하고 simulate 함수를 이용해 배열 A..

백준17471 게리맨더링
SW/알고리즘 문제풀이 2020. 2. 15. 16:09

2020.02.15 백준17471 / 게리맨더링 Solution 알고리즘 : 완전탐색 + BFS 전역변수 inMap : input으로 주어지는 각 지역의 인구수를 저장하는 배열 numMap : 완전탐색으로 할당할 각 지역의 선거구 정보(1 혹은 2로 구분) myMap : input으로 주어지는 각 지역의 연결상태 checkMap : BFS에서 방문 상태를 저장하는 배열 myQ : BFS에서 탐색 순서를 담을 큐 함수 resetCheck : BFS 함수를 마치고 나서 다음 BFS를 위해 check배열을 초기화 BFS : start(탐색 시작 구역)와 sizeMap(선거구 1 혹은 2의 총 갯수) 을 받아서 연결 지역들을 탐색하고 만약 sizeMap과 동일하게 연결되어있다면 해당 선거구의 총 인구수를 반환,..

BJ5373 큐빙
SW/알고리즘 문제풀이 2020. 2. 14. 14:48

2020.02.14 큐빙 풀이 알고리즘 : Simulation box[6] 에 큐브의 6개 면에 대해 char 를 인덱싱 할 수 있도록 써두었다. color[6]에 큐브 6개의 면을 초기화 할 색깔들을 써두었다. myCube에 6개의 면(각 면마다 3x3) 의 색들을 담았다. turnIdx 배열을 통해 6개의 면 중 바라보고 돌릴 면과 이때 바라보는 면을 둘러싸는 4개의 면을 아래,오른쪽,위,왼쪽 순으로 찾을 수 있도록 써두었다. turnInfo : 6개의 면 중 바라보고 돌릴 면을 정했을 때 turnIdx에서 나온 결과에 따라 해당 index들 중 기준점이 되는 점이 각 경우마다 달라지므로 경우에 맞게 써두었다. blockIdx : turnInfo에서 받아온 기준점에 따라 다음 두개의 숫자를 가져오는 ..

BJ16235 나무재테크
SW/알고리즘 문제풀이 2020. 2. 12. 13:24

2020.02.12 나무재테크 Solution InMap : 매 턴 마다 양분의 값을 저장하는 변수 (초기값은 모두 5) deadMap : 봄에 죽은 나무들이 여름에 더해질 양분을 저장하는 변수 plusMap : 처음에 input으로 주어지는 로봇이 겨울에 더하는 양분 treeInfo : 칸에 있는 나무들이 저장되는 vector 변수 알고리즘 : Simulation 주어지는 정보에 맞게 spring, summer, fall, winter 함수를 만들어 K번 만큼 수행하고 살아있는 나무의 개수를 세어 출력. //! 2020.02.12 // TODO BJ16235_나무재테크 #include #include #include using namespace std; const int MAX = 15; const i..

BJ12100 2048(Easy)
SW/알고리즘 문제풀이 2020. 2. 12. 10:24

2020.02.12 백준 12100 / 2048(Easy) Solution inMap : input map nextMap : 2048 게임이 진행됨에 따라 변경되는 map dirInfo : 완전탐색으로 1번째~5번째에 블락을 이동시키는 방향을 결정해둔 배열 myQ : 코드 1의 방식에서 사용될 Q check : 코드 2의 방식에서 사용될 bool 배열 알고리즘 기본적으로 5번의 턴에 사용될 방향을 완전탐색을 이용해 경우의 수를 구한다. O(4^5) 각 경우의 수 마다 5번의 턴을 수행시키고 최댓값을 갖는 블락의 수를 출력한다. 턴을 수행하는 방식은 기본적으로 방향에 따라 행/열 마다 블락들을 이동시키도록 구상하였다. 각 행/열 에서 블락들을 이동시키는 방식을 두 가지로 구현해보았다. Solution1 옮..

BJ17142 연구소3
SW/알고리즘 문제풀이 2020. 2. 11. 14:37

BJ17142 연구소3 2020.02.11 https://www.acmicpc.net/problem/17142 Solution inMap : input NxN map checkMap : BFS를 위한 bool map numBlank : 총 빈칸 갯수 myV : 바이러스 후보 좌표들 myQ : BFS를 위한 큐 vInfo : 완전탐색을 통해 얻은 0~M 까지의 활성화시킬 바이러스 index 정보 알고리즘 getResult 함수를 통해 완전탐색하여 0번 ~ myV.size()-1번 까지의 바이러스 중 M개를 고른다. (조합) 조합을 다 골랐다면(기저조건) BFS를 호출하여 탐색에 걸린 시간을 받아온다. 탐색했는데 빈칸이 존재한다면 INF를 리턴하여 실패했음을 알린다. 매 재귀호출에서 받아온 결과들 중 가장 ..

BJ13460 구슬탈출2
SW/알고리즘 문제풀이 2020. 2. 10. 18:02

2020.02.10 구슬탈출2 Solution Input 자료 저장 : pair로 R,B 구슬의 위치를 저장한다. 기울임 dir을 순서대로 저장하는 dirInfo 배열 알고리즘 기본적으로 기울임 dir을 저장하는 배열에 완전탐색을 이용해서 경우의 수를 모두 저장한다. 저장이 끝날 때 dirInfo 배열에 있는 방향으로 1~10 까지 기울이면서 구슬을 움직인다. 이때 기울임의 방향에 따라 R,B 구슬 중 어느것이 먼저 움직여야 하는지 결정한다. (예를 들어 오른쪽으로 움직이도록 기울이는 경우 더 오른쪽에 있는 구슬을 먼저 움직인다.즉, x좌표가 더 큰 구슬을 먼저 움직인다.) 구멍에 빠지거나 벽을 만날 때 까지 움직인다. 이렇게 하게 되면 동시에 한 점에 놓일 일이 없고 만약 이 때 B 구슬이 구멍에 빠지..

BJ15683 감시
SW/알고리즘 문제풀이 2020. 2. 10. 11:40

2020.02.10 감시 Solution Input 자료 저장 : inMap을 양쪽으로 2칸씩 여유있게 선언해놓고 4방향을 6(벽)으로 덮어서 만들고 시작했다. 알고리즘 : 기본적으로 CCTV의 기준 방향을 완전탐색을 이용해 정하고 방향이 모두 정해졌을 때의 사각지대의 크기를 모두 비교하여 최소 크기를 리턴하는 방식 getResult 함수 : idx번째부터 끝까지 CCTV의 basis direction을 선택하는 재귀구조의 완전탐색 함수 getSize 함수 : 방향을 모두 선택한 getResult 함수의 기저조건에서 detectMap에 CCTV탐색을 각 방향과 CCTV의 종류에 따라 탐색하도록 만들었고 탐색이 완료된 후에 사각지대의 크기를 구하고 다시 detectMap을 초기화하여 사각지대의 크기를 re..