본문 바로가기

code

(114)
백준 1194 달이 차오른다, 가자 문제: 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, 영식이가 열쇠를 숨겨놓는 다면 문에 대응하는 열쇠가 없을 수도 있다. 0은 한 개, 1은 적어도 한 개 있다. 그리고, 열쇠는 여러 번 사용할 수 있다. www.acmicpc.net 코드: #include #include #define f(i, n) for(int i = 1; i N >> M; queue q; fill(mz[0], mz[0] + M + 2, '#'); f(n, N){ mz[n][0] = mz[n][M + 1] = '#'; f(m, M) ..
설계 입력 위치만 받고 map을 다른 값으로 변경할지 결정(아기상어 -> 0) 템플릿 조합 사용 전 점층 여부 판단 탐색 자원 설정(visited) 전 점층 여부 판단 점층이면 bool로 선언, visited 처리 후 복구 점층이면 int로 선언, 탐색 호출시마다 ++v visited 항상 1부터 시작하는 v와 함께 사용하기! IN 체크 생활화 -> 배열 값 판단하는 모든 부분에 들어가야! 코어 연산자 비교 연산자 != 사용할 때 모든 가능성 따지기 비트 연산자 비트연산자 괄호 씌우기(우선순위 때문) 범위 인덱스 1부터 시작할 경우 각종 범위 지정 상하한 조절할 것(e.g. max_element) 라이브러리 algorithm max_elemnt: 범위가 0이어도 범위의 첫번째 원소를 반환 -> 범위가 0일수도..
SWEA 2383 점심 식사시간 코드: /* 1. 바로 다음(next(it))이 아니라 this trhead보다 큰 tm 필드를 지니는 thread 선택해야 */ #include #include #include #include using namespace std; vector hm; vector ext; vector extn; bool cbn[10]; int ans; struct thrd { int tm; bool job; int hmn; bool wait; }; struct oprt { bool operator()(const thrd &a, const thrd &b) const { if (a.tm == b.tm) { if (a.job == b.job) { return a.hmn b.job..
백준 16235 나무 재테크 문제: 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 떨어진 칸의 개수, c는 가장 왼쪽으로부터 떨어진 칸의 개수이다. r과 c는 1부터 시작한다. 상도는 전자통신공학과 출신답게 땅의 양분을 조사하는 로봇 S2D2를 만들었다. S2D2는 1×1 크기의 칸에 들어있는 양분을 조사해 상도에게 전송하고, 모든 www.acmicpc.net 설계: 스케쥴러 유형에서 자주 사용하는 list를 사용하려 했으나 결과는 런타임 에러, 시간초과 multiset 역시 시간 초과 deque로 구현, 76ms 소요: /* 1. 좌표 1부터 시작..
패인 곱씹으면서 의미 되돌아보고, 실수 잡아내기 당황해서 deviate하지 말기
SWEA 1949 등산로 조성 코드: /* 1. visited 값을 v로 설정했으면 not visited는 !vst[nr][nc]가 아니라 vst[nr][nc] != v */ /* 2. 깎는 건 한 번만 */ /* 3. 전역 변수 초기화 */ /* 4. 깎는 횟수만큼 재방문 가능해야 하므로 재방문 허용 */ #include #include #include using namespace std; int T; int N, K; int map[8][8]; bool vst[8][8]; int ans; const int dr[] = { -1, 0, 1, 0 }; const int dc[] = { 0, 1, 0, -1 }; #define IN(r, c) (0 > T; for (int t = 1; t > N >> K; int pkh = 0; vec..
탐색 - visited variation 문제 번호는 문제 링크, 제목은 풀이 링크 search - visited visited가 필요하지 않은 경우 한 방향으로만 탐색해서 왔던 길을 되돌아갈 수 없는 경우 백준 17070 파이프 옮기기 1 SWEA 1949 등산로 조성 작은 visited만 필요한 경우 SWEA 1949 등산로 조성 (높이 9) 큰 visited가 필요한 경우 -> representation, 자료구조 고민 백준 1525 퍼즐 visited 추가 차원이 필요할 경우 BFS(최소 거리) : 첫번째 방문한 자손만 유효하기 때문에 자손간 visited 공유 가능 특정 지점 N개에서 탐색 조건이 바뀌는 경우([1>>N]) 백준 1194 달이 차오른다, 가자 (열쇠 획득 전후 상응하는 문을 향하는 것은 다른 의미) 백준 17244 아맞..
SWEA 2117 홈 방범 서비스 코드: /* 1. 좌표 행열 상한 모두 N */ /* 2. 전역변수 초기화 */ /* 3. 안 돌아가는 TC 파악하기 같은 특성의 작은 TC 만들어서 해보는 것도 중요 */ /* 4. 정답 판별 중간에만 하지 말고 끝에도 해줄 것 */ #include #include using namespace std; int T; int N, M; bool map[20][20]; int vst[20][20]; int v = 1; int ans; int dn[] = { -1, 0, 1, 0 }; int dm[] = { 0, 1, 0, -1 }; #define IN(n, m) (0 > T; for (int t = 1; t > N >> M; for (int n = 0; n < N; ++n) { for (int m = 0; ..