본문 바로가기

Algorithm46

[백준] 14503번 : 로봇 청소기 (C++) (삼성 SW역량 기출) https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 삼성 SW역량 기출문제로 오랜만에 다시 풀어보았다. 많이 나오는 구현 문제이다! 설명은 주석으로 대체 :) #include using namespace std; int N, M; int R, C, D; int map[50][50]; int dx[4] = { -1,0,1,0 }; //0:북, 1:동, 2:남 , 3:서 int dy[4] = { 0,1,0,-1 }; int cnt = 0; //청소 .. 2021. 8. 30.
[백준] 2470번 : 두 용액 (C++) https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 정렬 및 이분탐색 문제이다. 숫자 범위가 -10억~10억 이므로, 두개의 숫자를 합쳐도 20억을 넘어가지 않기 때문에 long long 이 아닌 int로 해결하였다. 숫자를 먼저 오름차순으로 정렬하고, 왼쪽 포인터는 0 오른쪽 포인터는 N-1부터 시작하였다. L> N; for (int i = 0; i > n; v.push_back(n).. 2021. 8. 30.
[백준] 15685번 : 드래곤 커브 (C++) https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 삼성 SW 역량 테스트 기출문제이다. 드래곤 커브의 방향은 다음과 같다. 0 (동쪽) 1 (북쪽) 2 (서쪽) 3 (남쪽) 그리고 각 세대의 드래곤 커브는 일정한 방향 규칙을 갖는다. 0세대 : 0 1세대 : 0 1 2세대 : 0 1 2 1 3세대 : 0 1 2 1 2 3 2 1 4세대 : 0 1 2 1 2 3 2 1 2 3 0 3 2 3 2 1 N세대 : (N-1)세대.. 2021. 8. 29.
[백준] 5557번 : 1학년 (C++) https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 숫자가 주어졌을 때, +나 -를 끼워서 만들수 있는 올바른 등식의 개수를 출력하는 문제이다. 문제에서 등식의 개수는 2^63-1 이하라고 명시되어 있으므로 long long형을 이용해야한다. 이 문제는 처음에 일차원 dp로 구현하였다. dp[i] : 현재 시점에서 계산값이 i가 나오는 경우의 수 n : 지금 입력받은 수 dp[i]>0 면, dp_copy[i+n]+=dp[i] or dp_co.. 2021. 8. 28.
[백준] 1303번 : 전쟁 (C++) https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 자주 나오는 유형으로, DFS를 이용하여 간단히 구현하였다. 설명은 생략 :) #include using namespace std; int N, M,W,B; char map[100][100]; int visit[100][100]; int dx[4] = { 0,0,1,-1 }; int dy[4] = { 1,-1,0,0 }; int tmp; void solve(int x, i.. 2021. 8. 25.
[백준] 5430번 : AC (C++) https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 자체는 쉬운것 같았다. 그냥 구현이겠거니 vector를 사용해서 reverse()함수를 통한 뒤집기를 해보니.... 시간초과가 떠버렸다. (이렇게 쉽게 풀릴리가 없지...) 다음으로 시도한 방식은 자료구조 덱(deque)을 사용하는 것이다. R이 나올때마다 매번 reverse를 하면 엄청나게 비효율적일 것이므로, 정방향인지 역방향인지 상태를 나타내는 bool형 dir변수를 두었다. dir가 true면 정방향이므로, D가 나올때 pop_front().. 2021. 8. 23.