Problem Solving/BOJ(백준)
-
[BOJ]백준 17413번: 단어 뒤집기 2Problem Solving/BOJ(백준) 2021. 1. 30. 19:18
www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 단어 뒤집기 문제이다 사실 파이썬으로 split이랑 reverse써서 풀려고 했는데 내맘대로 안돼서 걍 C++ 스택으로 풀었다 '': 괄호가 닫히면 state변수를 0으로 바꿔준다 + 그대로 출력 이외의 문자 - state가 1일 때: 괄호 안의 문자라는 뜻. 그대로 출력 - state가 0일 때: 괄호 밖의 문자라는 뜻. 스택에 push (여는 괄호가 나왔거나, 스페이스가 나왔..
-
[BOJ]백준 1442번: 벽 부수고 이동하기 2/BFSProblem Solving/BOJ(백준) 2021. 1. 20. 21:30
www.acmicpc.net/problem/14442 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 벽 부수고 이동하기 시리즈 이전에는 벽을 한 개만 부술 수 있었는데, 이번에는 벽을 최대 k개 부술 수 있다. 말이 되고픈 원숭이 문제(2jinishappy.tistory.com/144)와 같이, visit배열을 3차원으로 관리서 벽을 k개 부쉈을 때의 방문 여부를 체크해 주어야 한다. 구조체 변수 순서 헷갈리고 배열 선언 제대로 안 해서 헤맸다....^^ #include #..
-
[BOJ]백준 1600번: 말이 되고픈 원숭이/BFSProblem Solving/BOJ(백준) 2021. 1. 20. 00:08
www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 말이 되고픈 원숭이의 소원을 들어주는 문제 이제 백준에서 런타임에러의 원인을 알려주는데 자꾸 DoubleFree 에러가 떠서 내 코드엔 동적할당이 없는데 왜 뜨지??싶었던 문제 하지만!!!!!!!!!!!!문제는!!!!!!!!!!! 함수에서 반환을 제대로 안 해줬던 것이엇다 모든 케이스에서 함수 값을 반환하지 않을 때 위와 같은 런타임에러가 발생할 수 있으니 나와 같은 문제를 겪었던 사람은 참고하..
-
[BOJ]백준 11723번: 집합/BitmaskProblem Solving/BOJ(백준) 2021. 1. 18. 23:31
www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 수업 때 비트마스킹 언급된 기념으로 풀어본 비트마스킹 문제 비트 연산을 연습해볼 수 있는 좋은 문제였다 !! 1️⃣ 특정 bit(n bit)을 1로 바꾸고 싶을 때 bit |= (1
-
[BOJ]백준 17928번: 오큰수/StackProblem Solving/BOJ(백준) 2021. 1. 13. 23:22
www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 수열이 있을 때, 각 원소에 대해 오큰수를 구하는 문제 오큰수란? 해당 원소를 Ai라 할 때 Ai의 오른쪽에 위치한 원소들 중 index가 가장 작으면서 Ai보다 큰 원소를 나타낸다 예제에 대해, [3 5 2 7]을 마지막 원소부터 보면 - 7: 오른쪽에 원소가 없으므로 -1 - 2: 바로 오른쪽에 7이 2보다 크므로 7 - 5: 한 칸 건너뛰어서 7이 5보다 크므로 7 - 3: 7이 가장 크지만 5가 7보다 왼쪽에 있으므로..
-
[BOJ]백준 1493번: 박스 채우기/DivideAndConquerProblem Solving/BOJ(백준) 2021. 1. 12. 21:46
www.acmicpc.net/problem/1493 1493번: 박스 채우기 세준이는 length × width × height 크기의 박스를 가지고 있다. 그리고 세준이는 이 박스를 큐브를 이용해서 채우려고 한다. 큐브는 정육면체 모양이며, 한 변의 길이는 2의 제곱꼴이다. (1×1×1, 2×2×2, www.acmicpc.net 분할 정복을 이용한 문제 L * W * H의 길이를 가진 박스를 분할해서, 가지고 있는 큐브들로 채우는 문제이다 큐브의 한 변은 2의 거듭제곱 꼴로 제한되어 있다 이 때, 박스에 같은 부피의 빈 칸이 있다면 무조건 큰 큐브로 채우는게 유리하다 Why? 만약 K*K*K 크기의 빈 칸을 현재 사용 가능한 작은 큐브로 채우는게 큰 큐브보다 총 큐브 수가 적다고 가정. but 작은 큐..
-
[BOJ]백준 11060번: 점프 점프Problem Solving/BOJ(백준) 2021. 1. 9. 23:52
www.acmicpc.net/problem/11060 11060번: 점프 점프 재환이가 1×N 크기의 미로에 갇혀있다. 미로는 1×1 크기의 칸으로 이루어져 있고, 각 칸에는 정수가 하나 쓰여 있다. i번째 칸에 쓰여 있는 수를 Ai라고 했을 때, 재환이는 Ai이하만큼 오른쪽으로 www.acmicpc.net 전형적인 DP문제이다 iteraton을 이용해서 구현하되, 현재 칸에서 이동 가능한 칸 중 최소 점프 수를 갱신할 수 있다면 해준다 n=int(input()) arr=list(map(int,input().split())) dp=[987654321 for _ in range(n+1)] dp[0]=0 for i in range(len(arr)): for j in range(i+1,i+arr[i]+1): ..
-
[BOJ]백준 11660번: 구간 합 구하기5/DPProblem Solving/BOJ(백준) 2021. 1. 5. 14:30
www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 전형적인 DP문제인 구간합 구하기이다 !! 1. 문제 정의 (x1, y1)부터 (x2, y2)까지의 직사각형 영역에 있는 element들의 합을 구한다 2. Subproblem & Recurrence (0,0) ~ (X2,Y2)까지의 구간합은 (X1-1,Y2)의 구간합+ (X2,Y1-1)의 구간합 - (X1-1,Y1-1)의 구간합으로 나타낼 수 있다(아래의 그림 참조)..