CodingTest/Backjoon

    [BOJ_4574] 스도미노쿠 (java)

    [BOJ_4574] 스도미노쿠 (java)

    문제링크 https://www.acmicpc.net/problem/4574 4574번: 스도미노쿠 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 채워져 있는 도미노의 개수 N이 주어진다. (10 ≤ N ≤ 35) 다음 N개 줄에는 도미노 하나를 나타내는 U LU V LV가 www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 재귀, 브루트포스, 백트래킹 스도미노쿠는 스도쿠 + 도미노를 의미하는 게임이다. 스도쿠의 규칙을 지켜주며, 도미노(2개의 쌍으로 이루어진 값)을 놓아주어 스도쿠를 풀어주는 문제이다. 도미노는 $(1,2), (1,3) (1,4) ... (7,8) (7,9) (8,9)$ 까지 1부터 9까지의 모든 값의 쌍으로 이루어져 있다. 그런데 $(1..

    [BOJ_16197] 두 동전 (java)

    [BOJ_16197] 두 동전 (java)

    문제링크 https://www.acmicpc.net/problem/16197 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 브루트포스, 재귀 문제는 두 동전을 보드판에 올려놓고 상하좌우 중 한 곳으로 이동시켜 주어 하나의 동전만 떨어뜨리는 방법을 구하는 문제이다. 단, 동전이 움직일 때 벽을 만나게 되면 움직이지 못하며, 그 외의 경우에는 모두 움직여 줄 수 있다. 떨어지는 경우는 동전이 보드의 배열 밖으로 나가는(범위를 벗어나는) 경우가 된다. 이 문제를 브루트포스로 ..

    BOJ_14888 연산자 끼워넣기 (Java)

    BOJ_14888 연산자 끼워넣기 (Java)

    문제링크 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 브루트포스 연산자를 끼워 넣는 문제는 브루트포스로 해결하였다. 연산자의 개수는 숫자 배열의 크기 -1 이므로 최대 10개이다. 10개를 순서를 고려하여 나열하는 방법은 최대 10!이므로 시간초과 없이 해결할 수 있다. 따라서, 만들수 있는 모든 연산자의 경우의수를 만들어준 뒤 계산해 주면 쉽게 해..

    [BOJ_16931] 겉넓이 구하기 (java)

    [BOJ_16931] 겉넓이 구하기 (java)

    문제링크 https://www.acmicpc.net/problem/16931 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 시뮬레이션, 구현 겉넓이를 모두 구해주는 문제이다. 윗면과 아랫면 그리고 옆면으로 나누어 구현을 해주면 된다. 윗면과 아랫면 윗면과 아랫면의 겉넓이를 구하는 방법은 매우 간단하다. 조건에서 주어진 $n*m$에 블럭이 1개 이상 들어가야하므로 항상 넓이는 $n*m$이 된다. 옆면 옆면의 넓이를 구하는 방법은 4방면으로 붙어있는 도형을 확인하..

    [BOJ_2290] LCD Test (java)

    [BOJ_2290] LCD Test (java)

    문제링크 https://www.acmicpc.net/problem/2290 2290번: LCD Test 첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다. www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 시뮬레이션 LCD Test 문제는 세그먼트로 생각하고 특정지점을 인덱싱하여 풀어주었다. 숫자를 표현해주어야하는 크기는 모두 동일하기 때문에 7-Segment와 동일하게 생각하여 해결해줄 수 있다. index를 잘 판단하여 A,B,C,D,E,F,G의 위치를 잡고 정해진 크기만큼 값을 넣어주기만 하면 된다. 그리고나서 0부터 9까지 각각 어느 지점의 세그먼트가 켜져야..

    [BOJ_15685] 드래곤 커브 (Java)

    [BOJ_15685] 드래곤 커브 (Java)

    문제링크 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 시뮬레이션 드래곤커브 문제를 봤을 때 굉장히 난해하다는 생각을 받았었습니다. 어떻게 그래프를 특정 점에서 90도씩 돌릴 수 있을까 고민을 많이 했는데, 생각해보니 그래프를 그릴 때 해당 점에서 어느 방향으로 이동하였는지만 알면 드래곤 커브를 구할 수 있었습니다. 드래곤 커브 문제는 특정 시작 점에서 시작 방향으로 1칸 이동하..

    [BOJ_15662] 톱니바퀴 ( java)

    [BOJ_15662] 톱니바퀴 ( java)

    문제링크 https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 객체 구현 톱니바퀴라는 객체를 구현하여 문제를 해결할 수 있습니다. 톱니바퀴 객체의 동작은 왼쪽 혹은 오른쪽으로 굴러가는 것입니다. 그리고 추가적으로 왼쪽 톱니바퀴와 만나는 지점의 톱니의 값과 오른쪽 톱니바퀴와 만나는 지점의 톱니의 값 그리고 맨 위 지점의 톱니가 N인지 S인지 알려줄 수 있습니다. 톱니를 돌리는 방법은 index를 변경해주..

    [BOJ_14890] 경사로 (java)

    [BOJ_14890] 경사로 (java)

    문제링크 https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 구현,사고 경사로 문제를 해결하기 위해서 경사로의 조건을 충분히 이해하고 구현해주어야 합니다. 위 경우는 경사로에 놓을 수 있는 경우들을 의미합니다. 문제에서 제시되는 경사로의 길이만큼 충분히 같은 수의 길이 있을 경우 경사로를 놓을 수 있으며 경사로를 놓을 때는 항상 1만 차이가 나야합니다. 위 경우는 경사로에 놓을 수 없는 경우입니다. 높이 차이가 2 이상인 경우 경사로..

    [BOJ_14499] 주사위 굴리기 (java)

    [BOJ_14499] 주사위 굴리기 (java)

    문제링크 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개의 줄에 지 www.acmicpc.net 문제설명 더보기 더보기 더보기 문제 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 2 4 1 3 5..

    [BOJ_14226] 이모티콘 (java)

    [BOJ_14226] 이모티콘 (java)

    문제링크 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제설명 더보기 더보기 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다..

    [BOJ_14226] 이모티콘 (java)

    [BOJ_14226] 이모티콘 (java)

    문제링크 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제설명 더보기 더보기 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다..

    [BOJ_7562] 나이트의 이동 (Java)

    [BOJ_7562] 나이트의 이동 (Java)

    문제링크 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 문제설명 더보기 더보기 더보기 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ ..

    [BOJ_7576] 토마토 (java)

    [BOJ_7576] 토마토 (java)

    문제링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제설명 더보기 더보기 더보기 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토..

    [BOJ_2667] 단지번호붙이기 (java)

    [BOJ_2667] 단지번호붙이기 (java)

    문제링크 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제설명 더보기 더보기 더보기 더보기 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 ..

    [BOJ_1707] 이분그래프 (java)

    [BOJ_1707] 이분그래프 (java)

    문제링크 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 문제설명 더보기 더보기 문제 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스..

    [BOJ_11724] 연결요소 (java)

    [BOJ_11724] 연결요소 (java)

    문제링크 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 문제설명 더보기 더보기 문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가..

    [BOJ_2156] 포도주 시식 (java)

    [BOJ_2156] 포도주 시식 (java)

    문제링크 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 문제설명 더보기 더보기 문제 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다...

    [backjoon_11057] 오르막 수 (Java)

    [backjoon_11057] 오르막 수 (Java)

    문제링크 https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 문제설명 더보기 더보기 문제 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수..