본문 바로가기

전체 글

(168)
디버깅 브루트포스 디버깅 지양 src부터 dst까지 무식하게 쫓아가는 무모한 디버깅 에러가 발생하기 직전의 상황 관찰하기 초기화 누락, boundary error 경로 문제의 경우 visited를 int로 변경하고 int인 v를 increment하면서 할당해 visited에 경로 출력하기
백준 1726 로봇 문제: 1726번: 로봇 많은 공장에서 로봇이 이용되고 있다. 우리 월드 공장의 로봇은 바라보는 방향으로 궤도를 따라 움직이며, 움직이는 방향은 동, 서, 남, 북 가운데 하나이다. 로봇의 이동을 제어하는 명령어는 다음과 같이 두 가지이다. 명령 1. Go k - k는 1, 2 또는 3일 수 있다. 현재 향하고 있는 방향으로 k칸 만큼 움직인다. 명령 2. Turn dir - dir은 left 또는 right 이며, 각각 왼쪽 또는 오른쪽으로 90° 회전한다. 공장 내 궤 www.acmicpc.net 코드: /* 1. 문제는 좌표 1부터 시작, 나는 0부터 시작 -> 조정 필요 */ /* 2. 궤도를 따라 움직이므로, 중간에 끊기면 더 이상 앞으로 나아갈 수 없다. */ #include #include ..
오류 TC 유형 답이 오름차순 -> 누적형 ans의 초기화 누락 답이 계단식 오름차순 -> 갱신현 ans의 초기화 누락 개별 수행과 집단 수행의 결과 상이 -> 공유 자원 초기화 누락 런타임 에러 boundary 체크 없이 배열 접근 잘못된 boundary 체크 등호를 포함해야 하는데 포함하지 않았다거나 상하한에 +-1 잘못 표시했거나 입력 idx가 1부터 시작하는데 0부터 처리했다거나 vice versa empty() 체크 없이 front(), back() 사용 이래도 잘 모르겠으면 주어진 크기 변수들의 maximum에 해당하는 TC를 직접 제작해 돌려보기 -> 그러면 어디에서 RE 났는지 나옴 무한 루프 이때까지의 상태를 누적한 route 출력해보기(퇴사) 함수 선언부에서 access violatio재귀 ..
백준 2931 가스관 문제: 2931번: 가스관 문제 러시아 가스를 크로아티아로 운반하기 위해 자그레브와 모스코바는 파이프라인을 디자인하고 있다. 두 사람은 실제 디자인을 하기 전에 파이프 매니아 게임을 이용해서 설계를 해보려고 한다. 이 게임에서 유럽은 R행 C열로 나누어져 있다. 각 칸은 비어있거나, 아래 그림과 같은 일곱가지 기본 블록으로 이루어져 있다. 가스는 모스크바에서 자그레브로 흐른다. 가스는 블록을 통해 양방향으로 흐를 수 있다. '+'는 특별한 블록으로, 아래 예시처럼 두 방향 (수직, www.acmicpc.net 코드: /* 1. 칸 내부 방향 비교가 아니라 칸 간 방향 비교의 경우, adj 꼭 써줘야 */ /* 2. map의 값이 'Z'인지는 map 갱신 후에 판별하기, 탈출 조건 모르겠으면 1로 plac..
백준 1938 통나무 옮기기 문제: 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4> N; vector str, ext; fill(map[0], map[0] + N + 2, 1); f(r, 1, N + 1) { map[r][0] = map[r][N + 1] = 1; f(c, 1, N + 1) { char ch; cin >> ch; switch (ch) { case 'B': str.emplace_back(r, c); break; case 'E': ext.emplace_back(r, c); break; } map[r][c] = (ch == '1'); } } fill(map[N + 1], map[N + 1] + N + 2, 1); bool tp = str[0].first == str[1].first..
백준 2665 미로 만들기 문제: 2665 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1≤n≤50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net 코드: 벽을 부쉈다고해서 map에 반영시킬 필요 없음! /* 1. 벽을 부쉈다고 mz에 반영시킬 필요 없음 */ /* 2. 벽을 부술 수 있는 경우의 수는 src, dst간 최단 거리인 50 * 2 - 2 */ #include #include #define f(i, n) for(int i = 0; i < (n); ++i) using namespace std; bool mz[50][50]; bool vst[50][50][98];/* 2 */ struct ..
백준 구슬탈출 1~4 문제: 구슬 탈출: 백준 13459 구슬 탈출 2: 백준 13460 구슬 탈출 3: 백준 15644 구슬 탈출 4: 백준 15653 코드: 1. 구슬탈출: #include #include #define f(i, n) for(int i = 0; i < (n); ++i) #define v(R, B) vst[(R).first][(R).second][(B).first][(B).second] using namespace std; typedef pair p; int N, M; char map[10][10]; bool vst[10][10][10][10]; int dn[] = { -1, 0, 1, 0 }; int dm[] = { 0, 1, 0, -1 }; bool frst(p &R, p &B, int d) { swit..
백준 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) ..