CS/Algorithm 문제

    [BakJoon] 백준 7569번 토마토

    [BakJoon] 백준 7569번 토마토 문제: https://www.acmicpc.net/problem/7569 내코드 - 처음에는 큐에 queue 이렇게 하려고 했으나 stl에는 배열이 들어가지 않는다고 해서 dist는 배열을 따로 만들어주었다. - 7576번 토마토와 비슷하지만 높이가 추가 되서 인접한 토마토만 추가해주고 높이만 따로 생각해주면 된다. - 아래는 아이패드에 정리한 내용 #include #include #include #include using namespace std; int h, m, n, maxN = 0; int x, y, z; int arr[100][100][100]; int dist[100][100][100]; bool visited[100][100][100]; queue q..

    [BaekJoon] 백준 7576번 토마토

    [BaekJoon] 백준 7576번 토마토 문제: https://www.acmicpc.net/problem/7576 내코드 - BFS 문제 - 처음에 익어있는 토마토의 위치를 전부 큐에 넣고 시작해야하는 문제 - 크게 어렵진 않았다. - 아래는 아이패드에 정리한 내용 #include #include #include #include #include using namespace std; int m, n, maxN = 0; int arr[1000][1000]; bool visited[1000][1000] = { false, }; queue qu; pair cur; void isNear(int a, int b) { if (a = n || b >= m) return; if (ar..

    [BaekJoon] 백준 1697번 숨바꼭질

    [BaekJoon] 백준 1697번 숨바꼭질 문제: https://www.acmicpc.net/problem/1697 내코드 - bfs문제인데 인접한 값 == 수빈이가 이동할 수 있는 위치(즉, 수빈이의 현재 위치를 x라고 하면 x-1, x+1, x*2)으로 생각하고 풀면 간단한 문제. - 처음에 런타임 에러가 나서 왜 그런가 봤더니 수빈이가 이동하는 위치가 100,000을 넘어가면 visited에서 배열의 범위가 초과되기 때문에 나는 거였다. - 그리고 틀렸다고 나와서 이번에는 수빈이와 동생의 위치가 같을 때를 따로 조건을 걸어주었다. - 배열을 초기화 할때 bool visited = { false, }이런식으로 하니까 전체가 같은 값으로 초기화가 됨. - 아래는 아이패드에 정리한 내용. #includ..

    [BaekJoon] 백준 2178번 미로탐색

    [BaekJoon] 백준 2178번 미로탐색 문제: https://www.acmicpc.net/problem/2178 내코드 - 시작점으로부터 거리를 측정해야하는 전형적인 bfs로 풀면 되는 문제 - scanf_s를 visual studio에서 썼는데 백준에서는 scanf를 써서 풀었다. - 무한대라는 의미에서 math.h를 include해서 INFINIFY를 써줬는데 0으로 출력되서 int 범위의 최대값인 2147483647을 초기 최소값으로 입력해줬다. - dist를 저장하기 위해 queue에 값을 저장할때 이중 pair를 써줬다. - 아래는 풀이를 위해 아이패드에 정리한 내용 #include #include #include #include #include using namespace std; int..

    [BaekJoon] 백준 1926번 그림

    [Baekjoon] 백준 1926번 그림 문제: https://www.acmicpc.net/problem/1926 내코드 - BFS를 이용하는 문제 - 코드짜고 바로 통과할만큼 간단한 문제였다. - 아래 파일은 아이패드 노타빌리티에 정리한 내용 #include #include #include #include using namespace std; int n, m; int** arr; bool** visited; int num = 0, maxNum = 0; queue qu; void isNear(int p, int q) { if (p = n || q >= m) return; if (arr[p][q] == 1 && visited[p][q] == false) { qu.push(..

    [BaekJoon]백준 2493번 탑

    [BaekJoon]백준 2493번 탑 문제: https://www.acmicpc.net/problem/2493 내코드 - 처음엔 정석대로 모든 입력값을 stack에 넣어서 top부터 차례대로 밑에것들이랑 비교하려고함. 그렇게 하면 더 복잡하단걸 깨달음. - stack과 pair를 이용함. stack에는 차례대로 입력을 받고, pair에는 입력값과 index값을 순서대로 저장함. - n개의 탑이 있을때 가장 왼쪽에 있는 것부터 차례대로 입력을 받음(ex. 69574) - 우선 첫번째 6이 들어왔을때 stack이 비어있는지 확인하고 비어있으니 0 출력, 출력후 (1, 6) pair로 stack에 쌓음. - 두번째 9가 들어왔을때 stack이 비어있는지 확인하고 안비어있으니 while문으로 들어가서 top의 ..

    [Baekjoon]백준 2504번 괄호의 값

    백준 2504번 괄호의 값 문제: https://www.acmicpc.net/problem/2504 내코드 - A(B+C) = A*B + A*C 를 활용 - 변수 mul에 곱해야 하는 값을 저장해두고 (가 추가되면 *2, [가 추가되면 *3을 해줌 - ), ]가 나오면 두가지로 나눠서 생각 - 앞에가 (,[이면 바로 숫자로 바꿔서 mul값을 곱해준후 pop, 그 후 위에서 곱해준 2, 3의 값을 나눠준후 다시 밑에서 () = 2, [] = 3 값을 곱해줘야하니 별다른 처리 안하고 sum += mul; - 앞에가 (,[이 아니면 error체크만 해준뒤 pop해준 후 mul값을 2,3으로 다시 나눠줌. - 만약 스택이 비어있으면 괄호가 닫힐수가 없으므로 error - input 값에서 i가 ), ]일때 i-..

    [BaekJoon] 백준 10799번 쇠막대기

    [BaekJoon] 백준 10799번 쇠막대기 문제: https://www.acmicpc.net/problem/10799 내코드 - '('가 들어오면 stack에 push해준다. - ')'가 들어오면 바로 앞이 '('인 경우 레이저 임으로 stack에 쌓인 값을 result에 더해주고 바로 앞이 ')'인 경우 막대기 이므로 result++ 해준다. #include #include using namespace std; int top = 0; int result = 0; int main(void) { ios::sync_with_stdio(false); cin.tie(0); string arr; cin >> arr; int n = arr.length(); for (int i = 0; i < n; i++) { ..