728x90

Algorithm/Baekjoon Online Judge

    [백준] 9935번 문자열 폭발 (Java)

    백준 9935번 문자열 폭발 : https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 문제 상근이는 문자열에 폭발 문자열을 심어 놓았다. 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐지게 된다. 폭발은 다음과 같은 과정으로 진행된다. 문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다. 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다. 새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다. 폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다. 상근이는 모든 폭발이 끝난 www.acmicpc.net 예전에 풀었던 키로거 문제에서 문자열 처리할 때 스택을 사용했던 기억이 나서 스택을 사용해서 구현했다..

    [백준] 15684번 사다리 조작 (Java)

    백준 15684번 사다리 조작 : https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 개인적으로 많이 어려웠던 문제다. 처음에는 bfs로 시도해봤지만 배열을 복사하는 탓에 메모리, 시간 초과가 떠서 dfs로 풀게 되었다. 평소에 사용하던 dfs의 방식으로 풀이하여 통과하긴 했지만, 모든 경우의 수를 전부 확인하며 최소값을 찾는 방법이기 때문에 시간이 오래 걸렸다. 따라서 이 문제에서는 dfs를 약간 독특하게 변형하여 풀었다. 사다리의 수를 0, ..

    [백준] 14501번 퇴사 (Java)

    백준 14501번 퇴사 : https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 보자마자 DP 문제라고 느낌이 왔지만, dfs로 더 쉽게 풀 수 있을 듯 해서 dfs로 풀게 되었다. 삼성 SW 역량테스트 기출 문제라고 해서 풀어봤는데, 생각보다 너무 쉬워서 깜짝 놀랬다. 총 걸린 시간 : 20분 난이도 : ★☆☆☆☆ 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private static int n, answer = ..

    [백준] 1022번 소용돌이 예쁘게 출력하기 (Java)

    백준 1022번 소용돌이 예쁘게 출력하기 : https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 r1, c1, r2, c2가 주어진다. 모두 절댓값이 5000보다 작거나 같은 정수이고, r2-r1은 0보다 크거나 같고, 49보다 작거나 같으며, c2-c1은 0보다 크거나 같고, 4보다 작거나 같다. www.acmicpc.net 이 문제의 포인트는 배열 선언을 어떻게 하느냐이다. r1, r2, c1, c2는 절댓값이 5000 이하이므로 사이즈가 10000짜리인 2차원 배열을 선언하면 모든 값을 담을 수 있다. 하지만 이런 식으로 코드를 짜면 무조건 메모리 초과가 뜨게 된다. 따라서 배열 선언을 상황에 맞게 유동적으로 해야한다. 문제 조건 중에 ..

    [백준] 15685번 드래곤 커브 (Java)

    백준 15685번 드래곤 커브 : https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커브의 시작 점, d는 시작 방향, g는 세대이다. (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10) 입력으로 주어지는 드래곤 커브는 격자 밖으로 벗어나지 않는다. 드래곤 커브는 서로 겹칠 수 있다. 방향은 0, 1, 2, www.acmicpc.net 입력으로 드래곤 커브의 정보가 주어지면 1 x 1의 정사각형 개수가 몇 개인지 판단하는 문제이다...

    [백준] 6087번 레이저 통신 (Java)

    백준 6087번 레이저 통신 : https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 문제 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 설치해야 하는 거울 개수의 최솟값을 구하는 프로그램을 작성하시오. 레이저로 통신한다는 것은 두 칸을 레이저로 연결할 수 있음을 의미한다. 레이저는 C에서만 발사할 수 있고, 빈 칸에 거울('/', '\')을 설치해서 방향을 90도 회전시킬 수 있다. www.acmicpc.net 생각보다 오래 걸렸던 문제이다. 최소 개수의 거울을 사용해서 두 'C'를 연결하면 된다. bfs를 사용..

    [백준] 1062번 가르침 (Java)

    백준 1062번 가르침 : https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문자로만 이루어져 있고, 길이가 8보다 크거나 같고, 15보다 작거나 같다. 모든 단어는 중복되지 않는다. www.acmicpc.net 은 브루트 포스, 시뮬레이션 문제이다. 입력으로 단어의 개수(N)와, 김지민이 가르치는 글자의 개수(K)가 주어진다. 문제에서 특이한 조건이 하나 있는데, 모든 단어는 "anta"로 시작되고 "tica"로 끝난다는 점이다. 따라서 a, c, i, n, t는 김지..

    [백준] 15683번 감시 (Java)

    백준 15683 감시 : 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는 종류에 따라 감시할 수 있는 방법이 다르다..

728x90