백준 문제풀이
-
BOJ 10828 : 스택백준 문제풀이/etc 2020. 7. 9. 00:01
문제 문제 풀어보기 풀이 종종 면접 문제로 나오는 유형이네요. 면접에서는 보통 배열로 구현하라고 합니다. 그러면 벡터의 기본 함수를 사용 할 수 없어서 조금 복잡해지겠네요. 코드 #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); vector v; int t; cin >> t; int x; string s; while (t--) { cin >> s; if (s == "push") cin >> x; if (s == "push") v.push_back(x); else if (s == "pop") { if (v.empty() == true) { cout
-
SWEA 2117 : [모의 SW 역량테스트] 홈 방범 서비스백준 문제풀이/GRAPH 2020. 6. 7. 00:03
문제 문제 풀어보기 풀이 테스트 케이스를 통과하기 위해 문제 꼼꼼히 읽자!!! 내일 삼성 코테보러갑니다. ㅈㅅ 주의할 점 1. 집이 1개 일수도 있다. 2. 최대 20 x 20 까지의 거리를 보자 3. 거리마다 bfs 하지 말고 한 번에 하고 계산하자. 코드 #include #include #include #include #include #include using namespace std; #define safe(x,y) x>=n || x maxSz) maxSz = dist[nx][ny]; q.push({ nx,ny }); } } // 각 거리마다 수익계산 int cnt = 0; for (int k = 1; k T; for (int i = 1; i < 50; i++) { pay[i] = (i * i) +..
-
SWEA 4013 : [모의 SW 역량테스트] 특이한 자석백준 문제풀이/etc 2020. 6. 6. 16:29
문제 문제 풀어보기 풀이 먼저 4개의 톱니바퀴를 어떤방향으로 돌릴것인지 배열에 결정해준다. 배열을 돌면서 톱니바퀴를 돌려준다. 한비트 쉬프트하며 정답에 더해준다. 코드 #include #include #include #include #include using namespace std; //#define safe(x,y) x>=n || x v(4, vector(8, 0)); // 회전방향 결정 void go(vector& dir, int index) { int tmp = index; // 왼쪽 톱니바퀴 while (tmp--) { if (v[tmp][2] != v[tmp + 1][6]) { dir[tmp] = -dir[tmp + 1]; } else break; } tmp = index; // 오른쪽 톱니바..
-
BOJ 1406 : 에디터백준 문제풀이/etc 2020. 6. 5. 12:31
문제 문제 풀어보기 풀이 사실 String 으로도 엄청 간단하게 구현이 가능합니다. 그런데 삽입,삭제가 너무 많아서 시간 초과가 나네요. 그래서 삽입,삭제가 유용한 리스트를 사용합니다. 대부분 벡터랑 비슷한데 리스트는 Iterator 를 기반으로 움직입니다. 그래서 삭제하는 과정에서 해당 cursor 위치의 노드를 삭제하면 그다음 Iterator 의 정보를 받아와야 합니다. cursor = list.erase(cursor) 이런 느낌이 되겠죠. erase 는 삭제 후 다음 노드의 Iterator를 반환해줍니다. 코드 #include #include #include #include #include using namespace std; #define safe(x,y) x>=8 || x> s >> n; lis..
-
BOJ 14225 : 부분수열의 합백준 문제풀이/BRUTE FORCE 2020. 6. 5. 00:30
문제 문제 풀어보기 풀이 완전 탐색을 하는데 중복되는 계산을 줄여주는 방법을 선택합시다. 재귀 문을 보면 그냥 포문 돌면서 하나씩 다 더해보는 겁니다. 그런데 저기서 st 인자를 없애고 모두 처음부터 본다면 어마어마한 중복이 발생합니다. 예를 들어 1, 2, 3, 4의 인자가 있다면 st 인자없이 모두 처음부터 탐색을 하는 경우 이러한 순서로 탐색할 겁니다. 하지만 현재 선택한 인덱스보다 작은 인덱스를 선택하는 경우는 모두 중복 수열이 됩니다. 따라서 st 인자를 사용해서 이전 인덱스는 넘어가게 해 줍시다. 코드 #include #include #include #include #include #include using namespace std; #define safe(x,y) x>=8 || x
-
SWEA 5650 : [모의 SW 역량테스트] 핀볼 게임백준 문제풀이/BRUTE FORCE 2020. 6. 2. 23:38
문제 문제 풀어보기 풀이 진짜 우리는 이 난독증을 어떻게 헤쳐나가야 할까. SWEA 문제는 안 되는 테스트 케이스 위주로 설명을 해보겠습니다. 자신이 이것까지 확인했는지 확인해보세요. 1. 블록홀과 웜홀을 없을수도 있다. 2. 오직 빈공간에서만 시작한다. 3. 블록의 수평수직면을 맞으면 반대방향으로 이동한다. 4. 벽을 맞아도 점수를 얻는다 (case 3) 저는 문제에 다 적혀있는걸 항상 놓치게 됩니다. 어렸을 때 책을 많이 읽으라는게 괜히 하는 소리가 아닌가 봅니다. 코드 #include #include #include #include #include #include using namespace std; #define safe(x,y) (x>=n || x ans) ans = score; break; }..
-
SWEA 2105 : [모의 SW 역량테스트] 디저트 카페백준 문제풀이/BRUTE FORCE 2020. 5. 29. 20:26
문제 문제 풀어보기 풀이 이 문제는 완전 탐색 문제입니다. 우선 탐색을 시작할 시작점의 좌표를 정하는 FOR문 두 개 두 대각선의 길이를 정하는 FOR문 두 개를 메인에서 정해줍니다. 그리고 그 조건으로 문제를 푸는 거죠. 허접하지만 이해를 돕기 위해 그림을 그려보면 저는 시작점을 왼쪽 끝에 있는 파란 동그라미로 잡았습니다. 시작점을 어느 점으로 정 하냐에 따라 순서가 조금씩 달라질 수 있습니다. 그리고 두대 각선의 길이는 빨간색선으로 표시했습니다. 굉장히 유사한 문제를 가져왔습니다. https://www.acmicpc.net/problem/17779 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재..
-
SWEA 1953 : [모의 SW 역량테스트] 탈주범 검거백준 문제풀이/GRAPH 2020. 5. 29. 19:27
문제 문제 풀어보기 풀이 비트 마스크를 통해 길이 이어져있는지만 확인하면서 BFS를 하면 풀 수 있는 간단한 문제입니다. 그 간단한 문제를 저는 엄청 실수를 많이 했네요. 비트 마스크 할 때 항상 하는 실수인데 이진수랑 십진수를 자꾸 바꿔 쓰는 게 문제네요... 여러분들은 꼭 이진수 1000을 십진수 8이라고 쓰시기 바랍니다. 코드 #include #include #include #include using namespace std; #define safe(x,y) x>=n || x= 1) continue; int reverse; if (k % 2 == 0) reverse = k + 1; else reverse = k - 1; if ((arr[x][y] & (8 >> k)) && (arr[nx][ny] &..