목록전체 글 (62)
코린이 탈출기
문제 바로가기 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 봄, 여름, 가을, 겨울이 지나면서 수행해야하는 일이 다 다르다. 네가지 일을 모두 끝내면 한 해가 지난 것인데, 입력으로 주어진 해만큼 수행한 뒤 땅에 남아있는 나무의 수를 구하면 된다. 땅 한 칸에는 다른 문제들과는 좀 다르게 여러 나무들이 심겨져있을 수 있기 때문에 map이라는 배열의 원소로 땅의 양분(food)과 나무의 나이 vector(tree_age)를 두었다. 나무가 하나 심겨질 때마다, vector에 push_back한..
이번 달에 친구들과 함께 새로운 프로젝트를 하게됐다. 공개 SW 개발자 대회에 참가하면서 시작한 프로젝트인데, 간단히 설명하자면 책이나 강의자료 pdf를 text로 변환하고 이를 text rank 알고리즘을 통해 중요문장과 keyword를 추출해낸다. 추출된 문장과 키워드로 빈칸문제를 출제하여 방대한 양의 암기과목을 공부하는 대학생들에게 도움이 될만한 자동 문제 출제 서비스를 구현하려고 한다. 프론트엔드에서는 Ajax를 통해 비동기적으로 웹 제작을 하려고 한다. 특정 페이지의 데이터 변화가 존재할 때 페이지를 refresh 해야하는데, 데이터의 변화가 잦다면 새로고침을 계속 수행해주어야하고 불필요한 트래픽이 증가하여 비효율적인 로딩이 많아지게 된다. 이러한 문제를 Ajax를 통해 해결할 수 있다. 데이터..
문제 바로가기 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 흑흑 너무 힘든 문제여따 ㅜ ㅅ ㅜ 애초에 코딩 전에 어떻게 풀 지 생각하는 부분에서 내가 잘못 생각한 게 여러 부분 있었다. 먼저, 나는 빨간 공이 움직일 수 있을 때만 판을 기울인다고 생각했다. 하지만 빨간공이 움직일 공간이 없더라도 파란공이 움직일 수 있으면 그 경우의 수를 고려해주었어야 했다. 두번째, 백트래킹 방식으로 구현할 때 파란공이 구멍에 빠지면 바로 return을 했는데, 이 부분에서..
문제 바로가기 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름�� www.acmicpc.net 문제 미쳤냐.. x y 반대로 돼있다 ㅜㅜㅜ 하.. 너무 헷갈려 !!!! 심지어 첫 예시가 d1 = 1, d2 = 1이여서 그냥 해보면 x, y가 바껴있다는 걸 모른다.. 분명 다 맞게 했는데 왜 안되는지 엄청 헤맸는데 ㅠㅅㅠ 풀기전에 예시로 나와있는 거 다 보고 해야겠다.. 어렵지는 않은데 느므 더럽다 이런문제 싫다 진짜... #include #include #include #include using namespace std; int N; int p..
문제 바로가기 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. www.acmicpc.net 푸는데 1시간 20분 걸렸다. 더 줄일 수 있었는데 이상한데서 시간 낭비했다 ㅠㅠ 뱀의 방향 전환정보에서 X와 C의 의미를 잘 생각해야한다. X초가 지난 후에 C의 방향을 전환하기 때문에 시작은 0초부터이고 마지막에는 현재 시간부터 (현재시간 + 최대 N길이)동안 move_snake를 한 번 더 해주어야한다. #include #include #include using namespace std; int N, K, L; int map[101][101]; in..
문제 바로가기 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 �� www.acmicpc.net 스택으로 푼다는 힌트를 받고 풀었다 그냥 봤을 땐 감 1도 안왔는데.. 그림으로 여러 경우를 그려서 생각해보니 현재의 탑 길이보다 크면서 가장 가까운 거리에 있는 탑에 레이저가 닿는다는 사실을 알 수 있었다. 그래서 스택에 탑의 길이와 번호를 함께 넣어주는데, 그 전에 스택을 탐색하며 현재 탑의 길이보다 짧은 탑은 쓸모 없는 정보이기 때문에 pop해준다. 현재 탑보다 길이가 긴 탑을 만나면 그 때 그 탑의 번호를 출력하고, 현재 탑의 길이를..
문제 바로가기 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 문제는 매우 쉽지만 최종적인 값이 int형에 저장이 될 지 생각을 해봐야 한다. 시험장의 개수가 최대 1,000,000개이고 응시자 수의 최대가 1,000,000명이므로 감독관의 수는 int형보다 더 큰 자료형에 담아주어야 한다. long long 자료형을 사용했다. #include #include using namespace std; int people[1000001]; int N, B, C..
문제 바로가기 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 조합 + BFS로 풀 수 있다 놓을 수 있는 치킨 집을 조합으로 계산하고 치킨집 각 집의 거리를 구하기 위해 BFS를 하면 된다. 조합으로 풀 수 있는 문제가 참 많구만 ~ #include #include #include #include #include using namespace std; //조합, bfs 함께 풀면 됨 int N, M; int map[50][50]; int dist[50][50]; int pos[4][2] =..