본문 바로가기

전체 글133

[백준 12872] 플레이리스트, C++ https://www.acmicpc.net/problem/12872 12872번: 플레이리스트 첫째 줄에 수빈이가 만들 수 있는 플레이리스트의 경우의 수를 출력한다. 경우의 수가 매우 커질 수 있기 때문에, 1,000,000,007로 나눈 나머지를 출력한다. www.acmicpc.net 본 문제는 수빈이가 플레이리스트를 만들수 있는 경우의 수를 출력하는 문제다. 모든 노래를 플레이리스트에 추가해야 하며 노래를 중복해서 추가할 수 있다. 하지만 중복된 노래를 추가 하려면, 두 곡 사이에 m개 이상의 곡이 있어야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3.. 2020. 4. 27.
[백준 2916] 자와 각도기, C++ https://www.acmicpc.net/problem/2916 2916번: 자와 각도기 문제 창영이는 방 청소를 하다가 자와 각도기를 발견했다. 다음날 창영이는 학교에 자와 각도기를 들고 갔고, 현우와 "작도 대결"을 하려고 한다. 창영이는 각도기와 자를 이용해서 만들 수 있는 각을 알고 있고, 두 각을 합하거나 빼서 새로운 각을 만드는 방법을 알고 있다. 현우가 어떤 각도를 외치면, 창영이는 자와 각도기를 이용해서 현우가 외친 각도를 작도해야 한다. 작도할 때는 새로운 각을 이용해서 또다른 새로운 각을 만드는 것도 가능하다. 현우가 외치는 www.acmicpc.net 본 문제는 주어진 n개의 각을 이용해 합하거나 빼서 새로운 각을 만든다. 또한 새로운 각을 이용해서 또 다른 새로운 각을 만드는 것도.. 2020. 4. 27.
[백준 17069] 파이프 옮기기 2, C++ https://www.acmicpc.net/problem/17069 17069번: 파이프 옮기기 2 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 www.acmicpc.net 본 문제는 파이프 옮기기 1 문제에서 입력의 크기가 커진 문제다. dfs 탐색을 할 때, 같은 연산을 여려번 하는 경우가 발.. 2020. 4. 22.
[백준 17070] 파이프 옮기기 1, C++ https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 www.acmicpc.net 본 문제는 가로, 세로, 대각선으로 파이프를 설치하여 n-1, m-1에 도착하는 경우의 수를 출력하는 문제다. 1은 벽이고 .. 2020. 4. 22.
[백준 16933] 벽 부수고 이동하기 3, C++ https://www.acmicpc.net/problem/16933 16933번: 벽 부수고 이동하기 3 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 벽 부수고 이동하기 시리즈 문제다. 0은 빈 칸, 1은 벽이다. 이동하는 방법은 상하좌우로 움직일 수 있고, 그 자리에 멈출 수 도 있다. 부술수 있는 벽의 개수가 주어지고, 벽은 낮에만 부술수 있다. 따라서 위치 좌표, 벽을 부순 개수, 낮밤을 저장할 4차원의 배열이 필요하다. 벽 부수고 이동하기 2 문제에서 낮밤만 추가된 문제로 낮밤을 표시하기 위해 3차원 .. 2020. 4. 22.
[백준 15683] 감시, C++ https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감시할 수 있는 방법은 다음과 같다. 1번 CCTV는 한 쪽 방향만 감시할 수 있다. 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향이어야 하고, 3번은 직각 방향이어야 한다. 4번은 세 방향, 5번은 네 방향을 감시할 www.acmicpc.net 본 문제는 주어진 cctv를 회전하여 사각지대의 최솟값을 구하는 문제다. cctv는 총 5가지가 존재하여 회전은 4방향으로 가능하다. 따라.. 2020. 4. 16.
[백준 15662] 톱니바퀴 (2), C++ https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, ..., 가장 오른쪽 톱니바퀴는 T번이다. 아래 그림은 T가 4인 경우이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다 www.acmicpc.net 본 문제는 톱니바퀴 문제와 마지막 12시에 톱니 개수를 구하는 부분만 다른 문제다. 톱니바퀴 문제를 풀 때를 생각해보면 참 어.. 2020. 4. 12.
[백준 1938] 통나무 옮기기, C++ https://www.acmicpc.net/problem/1938 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4 n; vector B; vector E; for (int i = 0; i > s; for (int j = 0; j 2020. 3. 30.
[프로그래머스] level 3 - 단어 변환 https://programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 본 문제는 프로그래머스 level 3 문제로 DFS 문제다. 개인적인 생각으론 프로그래머스는 BFS 보다 DFS를 이용하여 풀었을 때 코드가 간결하고 쉽게 풀리는거 같다. 최단 거리를 구하는 문제는 BFS를 사용하는게 빠르지만 이 문제는 DFS를 이용하였고 target에 도착할 때 마다 값을 비교하여 최솟값을 구하였다. 자세한 설명은 주석처리 하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14.. 2020. 3. 27.