구현 373

백준 17144번 미세먼지 안녕!

문제 링크입니다: https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)에 있는 미세먼지의 양을 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다. 공기청정기는 항상 왼쪽 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼 www.acmicpc.net 미세먼지의 확산이 동시다발적으로 일어나기 때문에 배열을 복사해야하는 점이 귀찮았지만 재밌는 문제였습니다. 알..

알고리즘/BOJ 2019.05.09

백준 17143번 낚시왕

문제 링크입니다: https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. 칸에는 상어가 최대 한 마리 들어있을 수 있다. 상어는 크기와 속도를 가지고 있다. 낚시왕은 가장 처음에 1번 열의 한 칸 왼쪽에 있다. 다음은 1초 동안 일어나는 일이며, 아래 적힌 순서대로 일어난다. 낚시왕은 가장 오른쪽 열의 오른쪽 칸에 www.acmicpc.net 상대적으로 쉬운 문제였습니다. 알고리즘은 아래와 같습니다. 1. vector graph[MAX][MAX] 벡터를 생성하..

알고리즘/BOJ 2019.05.09

백준 17140번 이차원 배열과 연산

문제 링크입니다: https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 진짜 구현만 하면 되는 문제였습니다. R과 C 연산만 잘 구현하면 되는데 아래와 같은 순서로 코드를 작성하면 됩니다. 1. 각 열/행에 나타나는 숫자의 등장횟수를 구하고 2. vector v[MAX]를 선언하여 각 열/행마다 나타나는 {숫자의 등장횟수, 숫자}의 집합을 저장하도록 합니다. 3. 이차원 배열을 모두 0으로 초기화하고 4. 벡터의 각 열/행마다 오름차순 ..

알고리즘/BOJ 2019.05.08

백준 12904번 A와 B

문제 링크입니다: https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다. 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. www.acmicpc.net '정방향이 아닌 역방향으로 진행해야지' 라는 생각을 했다면 쉽게 풀 수 있는 문제였고 이러한 생각을 하지 못했다면 어..

알고리즘/BOJ 2019.05.06

백준 8982번 수족관 1

문제 링크입니다: https://www.acmicpc.net/problem/8982 8982번: 수족관 1 입력의 첫 줄은 수족관의 경계에 있는 꼭짓점의 개수 N(1 ≤ N ≤ 5,000)이 주어진다. N은 짝수이다. 수족관의 경계는 항상 꼭짓점 (0, 0)부터 시작한다. 그리고 마지막 꼭짓점은 (A, 0)의 형태로 끝난다. 즉, 시작 꼭짓점과 마지막 꼭짓점의 가로줄 번호는 항상 0이다. 수족관의 경계를 이루는 변은 꼭짓점 (0, 0)부터 시작하는 데, 수직선분으로 시작하여 수평선분과 수직선분이 번갈아가며 반복되다 수직선분으로 끝난다. 따라서 수직선분이 수평선 www.acmicpc.net 별 다른 알고리즘을 요구하진 않지만 생각을 좀 해봐야하는 문제였습니다. 우선, 전처리가 이 문제의 핵심인 것 같습니다..

알고리즘/BOJ 2019.05.06

백준 15360번 Rasvjeta

문제 링크입니다: https://www.acmicpc.net/problem/15360 15360번: Rasvjeta It is Advent season. There are M street lights in a street N metres long (the meters of the street are denoted with numbers from 1 to N). Each of the lights lights up the meter of the street it’s located in and K meters to the left and to the right of that www.acmicpc.net 최근에 삼성 코딩테스트 문제만 풀어서 그런지 쉬운 문제였음에도 불구하고 한참을 헤맨 문제였습니다. 핵심은, ..

알고리즘/BOJ 2019.05.03

백준 4574번 스도미노쿠

문제 링크입니다: https://www.acmicpc.net/problem/4574 4574번: 스도미노쿠 문제 스도쿠가 세계적으로 유행이 된 이후에, 비슷한 퍼즐이 매우 많이 나왔다. 게임 매거진 2009년 7월호에는 스도쿠와 도미노를 혼합한 게임인 스도미노쿠가 소개되었다. 이 퍼즐은 스도쿠 규칙을 따른다. 스도쿠는 9×9 크기의 그리드를 1부터 9까지 숫자를 이용해서 채워야 한다. 스도쿠는 다음과 같은 조건을 만족하게 숫자를 채워야 한다. 각 행에는 1부터 9까지 숫자가 하나씩 있어야 한다. 각 열에는 1부터 9까지 숫자가 하나씩 있어야 한다. 3×3크기 www.acmicpc.net 스도쿠 문제인데 칸 하나하나에 숫자를 넣는 대신 2 * 1 혹은 1 * 2 도미노를 넣어야하는 복잡한 문제였습니다. 우..

알고리즘/BOJ 2019.05.03

백준 3568번 iSharp

문제 링크입니다: https://www.acmicpc.net/problem/3568 3568번: iSharp 문제 선영이는 C, C++, Java와는 다른 아주 세련된 언어를 만들었다. 선영이는 이 아름답고 예술적인 언어의 이름을 i#으로 정했다. i#은 기본 변수형과 배열([]), 참조(&), 포인터(*)를 제공한다. 배열, 참조, 포인터는 순서에 상관없이 혼합해서 사용할 수 있다. 즉, int의 참조의 참조의 배열의 포인터도 올바른 타입이다. int&&[]* i#은 여러 개의 변수를 한 줄에 정의할 수 있다. 공통된 변수형을 제일 먼저 쓰고, 그 다음에 각 www.acmicpc.net 간단한 문자열 처리 문제였습니다. 알고리즘은 아래와 같습니다. 1. 전처리를 통해 공통된 변수형과 각각의 추가적인 변..

알고리즘/BOJ 2019.05.02

백준 3190번 뱀

문제 링크입니다: https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 재밌는 시뮬레이션 문제였습니다. 뱀의 머리와 꼬리의 좌표를 모두 파악해야하기 때문에 양방향에서 삽입, 삭제가 가능한 덱을 이용..

알고리즘/BOJ 2019.05.01

백준 14499번 주사위 굴리기

문제 링크입니다: https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 어느 정도의 공간지각능력을 요구하는 문제였습니다. 주사위를 돌리면 해당 면이 어느 위치에 가는지를 잘 파악하고..

알고리즘/BOJ 2019.04.30