목록전체 글 (88)
블로그 언저리인 무언가
문제 : 2166 다각형의 면적 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 2차원 평면상의 점으로 이루어진 다각형의 면적을 출력하는 문제이다. N각형을 (N-2)개의 삼각형으로 쪼개서 CCW를 이용해 각각의 넓이를 구한 뒤 합쳐주면 된다. 다 풀어놓고 틀려서 이유를 몰랐는데 백준 질문글을 보고 절댓값 처리를 매번 해주지 않고 마지막에 한 번만 하도록 바꾸니 맞았다. 매번 절댓값을 씌웠을 때 틀리는 이유는 잘 모르겠다... Code #include #define ll long long using namespace std; typed..
문제 : 9019 DSLR 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 � www.acmicpc.net 두 수가 주어졌을 때 어떤 행동을 통해 첫 번째 수를 두 번째 수로 바꾸는 최소 횟수와 그 경로를 출력하는 문제이다. BFS를 이용해 최소 횟수를 구하면서, 가는 경로를 저장하는 문자열 배열도 만들어 추가로 저장해주면 된다. 나 같은 경우에는 그냥 pair를 활용해 최소 횟수와 경로를 저장하는 배열을 한데 묶어 저장했다. Code #include #define ll long long using namespace std;..
문제 : 5525 IOIOI 5525번: IOIOI 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000) www.acmicpc.net x가 주어졌을 때, x+1개의 I와 x개의 O가 교대하는 문자열의 개수를 찾아 출력하는 문제이다. 그냥 중첩 반복문을 사용해 풀게 되면 O(N^2)으로 시간 초과가 나게 되므로 시간을 O(N)으로 줄여야 한다. 가장 길게 교대하는 문자열의 크기가 y이라고 할 때, 안에 속하는 부분 문자열의 개수는 y-x+1 임을 활용하여 풀면 된다. Code #include #define ll long long using namespace std; int main(){ ios..
문제 : 1780 종이의 개수 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 종이가 모두 같은 숫자로 이루어졌는지 확인하고 만약 다른 숫자가 포함된다면 종이를 9 등분하는 것을 반복하는 문제이다. 분할 정복을 이용해 재귀 함수 코드를 작성해 시작 좌표와 가로세로 길이를 정해준 후 반복하면 된다. Code #include #define ll long long using namespace std; ll N, arr[2500][2500], ans[3]; void f(ll x, ll y, ll size)..
문제 : 1213 팰린드롬 만들기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dmvmw2/btqI58tSDHN/3sVW6Y4gx2sU3BnZbfUiG0/img.gif)
일단 저번에 만들던 레이아웃을 이어서 만들기 시작했다. 만들다 보니 론, 쯔모 버튼을 사방에 놓기에는 공간이 부족하겠다는 생각이 들어 중간으로 옮기기로 했고, 유국에 관한 것도 처리해야 하기 때문에 유국 버튼도 만들기로 했다. 가운데 부분에는 현재가 몇 국인지 표시하는 것과 연장봉, 공탁된 1000점 봉의 개수를 나타내기로 했다. 대충 모양새를 잡았으니 이제 본격적으로 JavaScript를 짤 시간이다. 하지만 점수 부분을 어떤 식으로 순차적으로 처리해야 할지 감도 잡히지 않고 시간이 별로 없어 리치봉 부분을 그린 후 점수 부분을 클릭하면 리치를 걸고 리치봉 카운트가 올라가는 부분만 만들었다. ▶▶▶ 구경하러가기 ◀◀◀
문제 : 1531 투명 1531번: 투명 첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌� www.acmicpc.net 100*100 크기의 그림에서 가려진 그림의 개수를 구하는 문제이다. 배열의 크기가 크지 않기 때문에 통째로 저장한 후 값이 M이상인 곳을 체크해 출력하면 된다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); ll N, M, arr[105][105], ans=0; fill(&arr[0]..