전체 글

전체 글

    [백준] 15683 감시, 자바

    15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 문제 간단 설명 보드가 주어지고 보드 안에 벽과 카메라가 주어집니다. 카메라는 5가지 종류가 있으며 볼 수 있는 방향이 각각 다릅니다. 그리고 이 카메라는 얼마든 회전시킬 수 있습니다. 주어진 카메라들을 마음대로 회전한 뒤 가장 많은 곳을 볼 수 있는 즉 사각지대가 가장 적게 되었을 때의 사각지대의 개수를 구하는 문제입니다. 문제 풀이 카메라의 최대 개수가 8개이기 때문에 충분히 작은 수라고 판단했습니다. 그렇기에 모든 경우의 수를 확인하는 dfs를 이..

    [백준] 21608 상어 초등학교, 자바

    21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 문제 간단 설명 상어 초등학교에서 자리 배치를 진행합니다. 이 때 입력되는 학생 순서대로 자리를 배치하며 각 학생이 좋아하는 학생들이 많이 인접한 자리로 배치해주려 노력합니다. 만약 그 수가 같다면 인접한 자리에 빈자리가 많아야 하고, 그 마저도 같다면 가장 좌상단의 자리를 배치해줍니다. 그리고 결과적으로 각각의 학생들이 얼마나 만족하는지 구하는 문제입니다. 문제 풀이 / 코드 코드의 주석으로 문제의 풀이를 대체합니다. package com.baekjo..

    [백준] 14891 톱니바퀴, 자바

    14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제 간단 설명 네 개의 톱니바퀴가 존재하며 각 톱니바퀴를 회전시킵니다. 톱니바퀴가 회전할 때 인접한 곳에 있는 톱니바퀴와 만나는 부분의 자석 극이 다르다면 함께 회전하게 됩니다. 톱니바퀴를 여러 번 회전 시킨 후 톱니바퀴의 상태를 확인하는 문제입니다. 문제 풀이 이번 문제도 구현 문제로 톱니바퀴의 모양을 어떻게 코드로 표현하며, 이를 어떻게 회전시키는지 생각할 수 있는지 보는 문제 입니다. 코드 package com.baekjoon.gold; import j..

    [백준] 14888 연산자 끼워넣기, 자바

    14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 간단 설명 주어진 수와 주어진 연산자의 개수를 가지고 구할 수 있는 최댓값, 최솟값을 구하는 문제입니다. 주어진 수의 배치는 변경할 수 없으며, 연산은 무조건 왼쪽부터 시행한다는 조건이 가지고 있어 그렇게 어려워 보이지는 않는 문제였습니다. 문제 풀이 저는 dfs를 이용하여 풀어보았습니다. 생각을 떠오르기 전에는 뭔가 힘들었는데 dfs로 풀면 되겠다라고 떠오르고 나니 생각보다 쉽게 해결을 한 문제입니다...

    [백준] 14503 로봇 청소기, 자바

    14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 문제 간단 설명 보드가 주어지고 로봇청소기가 이동하며 먼지를 청소합니다. 몇칸의 먼지를 청소 할 수 있는치 카운트 하는 문제입니다. 문제 풀이 특별한 알고리즘이 필요하다기 보다는 문제에서 주어진 대로 구현하는 문제입니다. 보드 안에서 네 방향의 탐색을 할 수 있다면 풀 수 있는 문제입니다. 코드 package com.baekjoon.gold; import java.io.BufferedReader; import ja..

    [백준] 14499 주사위 굴리기, 자바

    14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 문제 간단 설명 각 면에 숫자를 가진 주사위가 보드를 이동하며 숫자들을 변경합니다. 이 때 주사위가 이동할 때마다 주사위의 상단에 있는 숫자를 출력해야합니다. 문제 풀이 특별한 알고리즘이 필요한 문제는 아니었습니다. 주사위의 이동을 어떻게 표현할지 생각할 수 있다면 풀 수 있는 백준의 골드 난이도 치고는 쉬운 문제라고 생각합니다. 코드 package com.baekjoon.gold; import j..

    [백준] 2096 내려가기, 자바

    [백준] 2096 내려가기, 자바

    2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 문제 간단 설명 세로 길이 N 가로길이 3을 가진 표가 존재하며 각 층마다 세 개의 수가 존재합니다. 각 세 개의 수는 그 다음 층(아래층)으로 내려갈 때에 바로 아래 또는 바로 아래의 수와 붙어있는 수로만 이동할 수 있습니다. 별표는 현재 위치, 그리고 파란 동그라미가 갈 수 있는 위치 입니다. 그렇다면 숫자 표가 주어졌을 때 가장 아래층에 도달 할 수 있는 최대수, 최소수를 구하시오. 문제 풀이 저는 DP를 이용해 푸는 방식을 생각했습니다. 각 위치별로 갈 수 있는 위치가..

    [백준] 9019 DSLR, 자바

    9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 문제 간단 설명 제목이 DSLR 이길래 카메라 관련 문제인 줄 알았으나 D, S, L, R 연산을 하는 문제라서 DSLR 이었습니다. 문제는 0~10000 수를 저장할 수 있는 레지스터에 시작 수가 하나 들어있고, 타겟(목표가 될 수) 숫자가 주어집니다. 우리는 이 시작 수를 가지고 D, S, L, R 연산만을 이용해서 타겟 수를 만들면 되는데 최소한의 명령으로 이를 완성해야 합니다. 이 최소한의 명령을 구하는 것이 문제이며, '스페셜 저지' 문제라..