[Algorithm] 백준_문자열 폭발_9935번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/9935티어: 골드4💡풀이 문제 유형자료 구조 문자열 스택 걸린 시간1시간 풀이 방법 도출StringBuilder sb에 입력 받은 문자를 하나씩 추가하고 sb의 길이가 폭발문자열 길이와 같거나 길어지면 sb 마지막 문자들이 폭발 문자열과 같은지 비교한다.만약 같다면 sb.delete로 삭제해주고sb가 빈값이라면 "FRULA"를, 빈값이 아니라면 sb를 그대로 반환해준다.import java.util.*;import java.io.*;class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..
[Algorithm] 백준_포도주 시식_2156번 (JAVA) 🍇
·
Algorithm
📝문제효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다.포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다.연속으로 놓여 있는 3잔을 모두 마실 수는 없다.효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을 작성하시오. 예를 들어 6개..
[Algorithm] 백준_뱀과 사다리 게임_16928번 (JAVA) 🐍
·
Algorithm
📝문제https://www.acmicpc.net/problem/16928티어: 골드5뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다.주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까?게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다.플레이어는 주사위를 굴려 나온 수만큼 이동해야 한다. 예를 들어, 플레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라면, i+4번 칸으로 이동해야 한다. 만약 주사위를 굴린 결과가 100번 칸을 넘어간다면..
[Algorithm] 백준_마법사 상어와 파이어볼_20056번 (JAVA) 🔥
·
Algorithm
📝문제티어: 골드4https://www.acmicpc.net/problem/20056어른 상어가 마법사가 되었고, 파이어볼을 배웠다.마법사 상어가 크기가 N×N인 격자에 파이어볼 M개를 발사했다. 가장 처음에 파이어볼은 각자 위치에서 이동을 대기하고 있다. i번 파이어볼의 위치는 (ri, ci), 질량은 mi이고, 방향은 di, 속력은 si이다. 위치 (r, c)는 r행 c열을 의미한다.격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다.파이어볼의 방향은 어떤 칸과 인접한 8개의 칸의 방향을 의미하며, 정수로는 다음과 같다.7016 2543마법사 상어가 모든 파이어볼에게 이동을 명령하면 다음이 일들이 일어난다.모든 파이어볼이 자..
[Algorithm] 백준_컨베이어 벨트 위의 로봇_20055번 (JAVA) 🤖
·
Algorithm
📝문제https://www.acmicpc.net/problem/20055티어: 골드5 💡풀이문제 유형구현, 시뮬레이션 걸린 시간세번째 시돈데 60분 걸렸다 풀이 방법 도출(주석 참조)import java.util.*;import java.io.*;class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.next..
[Algorithm] 백준_마법사 상어와 비바라기_21610번 (JAVA)🪄
·
Algorithm
📝문제티어: 골드5 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기를 크기가 N×N인 격자에서 연습하려고 한다. 격자의 각 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지한다. 바구니에 저장할 수 있는 물의 양에는 제한이 없다. (r, c)는 격자의 r행 c열에 있는 바구니를 의미하고, A[r][c]는 (r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미한다. 격자의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다. 마법사 상어는 연습을 위해 1번 행과 N번 행을 연결했고, 1번 열과 N번 열도 연결했다. 즉, N번 행의 아래에..
[Algorithm] 백준_상어 초등학교_21608번 (JAVA) 🏫
·
Algorithm
📝문제https://www.acmicpc.net/problem/21608티어: 골드5상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호가 매겨져 있고, (r, c)는 r행 c열을 의미한다. 교실의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다.선생님은 학생의 순서를 정했고, 각 학생이 좋아하는 학생 4명도 모두 조사했다. 이제 다음과 같은 규칙을 이용해 정해진 순서대로 학생의 자리를 정하려고 한다. 한 칸에는 학생 한 명의 자리만 있을 수 있고, |r1 - r2| + |c1 - c2| = 1을 만족하는 두 칸이 (r1, c1)과..
[Algorithm] 백준_청소년 상어_19236번 (JAVA) 🐟
·
Algorithm
📝문제티어: 골드1  아기 상어가 성장해 청소년 상어가 되었다. 4×4크기의 공간이 있고, 크기가 1×1인 정사각형 칸으로 나누어져 있다. 공간의 각 칸은 (x, y)와 같이 표현하며, x는 행의 번호, y는 열의 번호이다. 한 칸에는 물고기가 한 마리 존재한다. 각 물고기는 번호와 방향을 가지고 있다. 번호는 1보다 크거나 같고, 16보다 작거나 같은 자연수이며, 두 물고기가 같은 번호를 갖는 경우는 없다. 방향은 8가지 방향(상하좌우, 대각선) 중 하나이다. 오늘은 청소년 상어가 이 공간에 들어가 물고기를 먹으려고 한다. 청소년 상어는 (0, 0)에 있는 물고기를 먹고, (0, 0)에 들어가게 된다. 상어의 방향은 (0, 0)에 있던 물고기의 방향과 같다. 이후 물고기가 이동한다. 물고기는 번호가 ..
[Algorithm] 백준_아기 상어_16236번 (JAVA) 🦈
·
Algorithm
📝문제https://www.acmicpc.net/problem/16236티어: 골드 3문제N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다.아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다.아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다.아기 상어가 어디로 이동할지 결정하는 방법..
[Algorithm] 백준_특정한 최단 경로_1504번 (JAVA) 투포인터 알고리즘
·
Algorithm
📝문제https://www.acmicpc.net/problem/2559티어: 실버3💡풀이문제 유형투포인터 알고리즘 걸린 시간20분 시간 복잡도  풀이 방법 도출연속적이고, 범위가 계속 오른쪽으로 이동하는 문제여서 투포인터를 바로 떠올릴 수 있었다.left = 0, right = K 로두고 right가 N이하일때 까지 반복하는 반복문을 작성한다.이때 결과값인 max는 int범위의 최소값으로 설정해야 한다. 입력 받는 정수의 범위가 -100 ~ 100이기 때문에!이후 left부터 right까지의 arr의 합을 구해 max와 비교해주면 답을 도출할 수 있다.import java.util.*;import java.io.*;class Main{ public static void main(String[] ..