끄적끄적 코딩
article thumbnail
[C++] 백준 11365번 !밀비 급일
알고리즘 2019. 9. 9. 08:26

문자를 뒤집는 문제입니다. 줄단위로 받기위해서 getline(cin, string)을 사용하고 reverse함수를 사용해서 문자를 뒤집었습니다. #include #include #include #include using namespace std; int main(int argc, char *argv[]) { string s; while (1) { getline(cin, s); if (s == "END") { break; } reverse(s.begin(), s.end()); cout

article thumbnail
[C++] 백준 1476번 날짜 계산
알고리즘 2019. 9. 9. 08:22

날짜 E, S, M은 각각 15, 28, 19를 주기로 돌아갑니다. 이 때 E, S, M가 주어졌을 때 몇년이 걸리는지 출력하는 문제입니다. i를 1부터 증가하면서 (i-E) % 15 (i-S) % 28 (i-M) % 19 가 성립하는 수를 찾으면 됩니다. #include using namespace std; int main(int argc, char *argv[]) { int E, S, M; int i = 1; cin >> E >> S >> M; while (1) { if ((i - E) % 15 == 0 && (i - S) % 28 == 0 && (i - M) % 19 == 0) { cout

article thumbnail
[C++] 백준 10953번 A+B - 6
알고리즘 2019. 9. 8. 23:13

덧셈 문제입니다. 입력받는 A,B를 string으로 받아서 다시 A, B에 넣어주어서 더해주었습니다. #include #include using namespace std; int main(int argc, char *argv[]) { int n; int a, b; string s; cin >> n; for (int i = 0; i > s; a = s[0] - '0'; b = s[2] - '0'; cout

article thumbnail
[C++] 백준 1629번 곱셈
알고리즘 2019. 9. 8. 18:21

분할정복 문제입니다. (A^B) % C를 출력하면 됩니다. B를 전부 하나하나 곱하면은 시간초과가 날 수 있습니다. 2^4의 경우 4^2와 동일합니다. 2^8의 경우 4^4 16^2와 동일합니다. 이처럼 2로 나누어 떨어질 경우 그 수로 곱한 후 승수를 2로 나눈 만큼 제곱하면 됩니다. #include using namespace std; int A, B, C; int divCon(int n, int k) { int result; int x; if (k == 0) { return 1; } x = divCon(n, k / 2); result = 1LL * x * x % C; if (k % 2) { result = 1LL * result * n % C; } return result; } int main(in..

article thumbnail
[C++] 백준 1780번 종이의 개수
알고리즘 2019. 9. 8. 16:53

분할정복 문제입니다. 사각형에서 모든 숫자가 같으면 그 숫자에 대해서 카운트를 증가합니다. 다를 경우에 사각형을 9조각으로 나누어서 위의 작업을 반복합니다. 최종적으로 -1, 0, 1이 총 몇개의 사각형으로 이루어져있는지 출력합니다. 시작점 위치의 값을 check에 넣고 반복문을 통해서 다른 값들과 비교합니다. 다를경우 check=2로 바꾸고 9조각으로 나눠서 작업을 반복합니다. 같을 경우 check의 값에 따라 해당하는 카운트를 증가시켜줍니다. #include #include #include #include using namespace std; int c[3]; int map[3000][3000]; void divCon(int n, int m, int x) { int check = map[n][m]; ..

article thumbnail
[C++] 백준 1992번 쿼드트리
알고리즘 2019. 9. 8. 15:03

분할정복 문제입니다. 사각형이 전부 흰색이면 0, 전부 검정색이면 1을 출력합니다. 사각형 안의 색이 여러개라면 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래로 4방면으로 분할해서 위의 과정을 반복합니다. 분할 할 때 '('를 출력해주고, 분할이 끝났을때 ')'을 출력해줍니다. #include #include #include #include using namespace std; int map[130][130]; void divCon(int ns, int ms, int ne, int me) { int check = map[ns][ms]; for (int i = ns; i < ne; ++i) { for (int j = ms; j < me; ++j) { if (check == 0 && map[i][j] ==..

article thumbnail
[C++] 백준 2630번 색종이 만들기
알고리즘 2019. 9. 8. 14:34

분할 정복 문제입니다. 색종이의 색이 다 같을 때 까지 색종이를 4조각으로 자를 때 흰색 종이와 파란색 종이의 개수를 구해야합니다. 함수에 파라미터를 (x시작 지점, y시작 지점, x끝 지점, y끝 지점) 으로 하였습니다. 그리고 종이안의 색을 비교해서 다른것이 있다면 4조각으로 잘라서 다시 함수를 실행해줍니다. xs = x의 시작지점 ys = y의 시작지점 xe = x의 끝지점 ye = y의 끝지점 func(xs, ys, (xs+xe)/2, (ys+ye)/2) // 왼쪽 위 func((xs+xe)/2, ys, xe, (ys+ye)/2) // 오른쪽 위 func(xs, (ys+ye)/2, (xs+xe)/2, ye) // 왼쪽 아래 func((xs+xe)/2, (ys+ye)/2, xe, ye) // 오른쪽..

article thumbnail
[C++] 백준 5430번 AC
알고리즘 2019. 9. 8. 04:36

덱 문제입니다. 숫자를 덱에 입력받고 함수를 실행 했을 때의 결과값을 출력해야합니다. R = 숫자들 뒤집기 ex) 1234 -> 4321 D = 앞의 문자 제거 ex) 1234 -> 234 deque가 비어있는데 D함수 실행시 -> "error" 출력 덱에 모든 값을 다 넣고 R을 입력받으면 reverse = !reverse를 해주어서 reverse가 true면 D함수에 대해 pop_back() reverse가 false면 D함수에 대해 pop_front()를 해주었습니다. 비어있는데 D함수 실행시 error를 true로 해주었습니다. reverse가 true면 d.back()을 이용해 뒤에서 부터 출력하고 reverse가 false면 d.front()를 이용해 앞에서 부터 출력했습니다. #include..

검색 태그