-- 예전 기록/BOJ 369

[ BOJ ] 3055 : 탈출 ( GOLD 4 ) / Python

문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제일 친한 친구인 비버의 굴로 가능한 빨리 도망가 홍수를 피하려고 한다. 티떱숲의 지도는 R행 C열로 이루어져 있다. 비어있는 곳은 '.'로 표시되어 있고, 물이 차있는 지역은 '*', 돌은 'X'로 표시되어 있다. 비버의 굴은 'D'로, 고슴도치의 위치는 'S'로 나타내어져 있다. 매 분마다 고슴도치는 현재 있는 칸과 인접한 네 칸 중 하나로 이동할 수 있다. (위, 아래, 오른쪽, 왼쪽) 물도 매 분마다 비어있는 칸으로 확장한다. 물이 있는 칸과 인접해있는 비어있는 칸(적어도 한 변을 공유)은 물이 차게 된다. 물..

[ BOJ ] 10282 : 해킹 ( GOLD 4 ) / Python

문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 그로부터 일정 시간 뒤 a도 감염되고 만다. 이때 b가 a를 의존하지 않는다면, a가 감염되더라도 b는 안전하다. 최흉최악의 해커 yum3이 해킹한 컴퓨터 번호와 각 의존성이 주어질 때, 해킹당한 컴퓨터까지 포함하여 총 몇 대의 컴퓨터가 감염되며 그에 걸리는 시간이 얼마인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스의 개수는 최대 100개이다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 첫째 줄에 컴퓨터 개수 n, 의존성 개수 d, 해킹당한 컴퓨터의 번..

[ BOJ ] 14495 : 피보나치 비스무리한 수열 ( SILVER 5 ) / Python

문제 피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다. 1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ... 자연수 n을 입력받아 n번째 피보나치 비스무리한 수열을 구해보자! 입력 자연수 n(1 ≤ n ≤ 116)이 주어진다. 출력 n번째 피보나치 비스무리한 수를 출력한다. 풀이 과정 다이나믹 프로그래밍을 이용해 피보나치 수를 구하는 것처럼 dp[n] = dp[n - 3] + dp[n - 1] 을 이용했다. import sys input = sys.stdin.readline n = int(input()) dp = [0 for _ in range(n + 1)] dp[1] ..

[ BOJ ] 2557 : Hello World ( BRONZE 5 ) / C, C++, Python, Java

단계별 풀어보기 문제를 풀이하면서 기초 알고리즘을 다잡아 보자는 마음으로 단계별 문제 풀이를 시작하게 되었다. 문제 Hello World!를 출력하시오. 입력 없음 출력 Hello World!를 출력하시오. 풀이 과정 표준 출력을 이용해 Hello World! 를 출력하면 된다. C #include int main(void) { printf("Hello World!"); return 0; } C++ #include using namespace std; int main(void) { cout

[ BOJ ] 28057 : Binary Sequence and Queries ( DIAMOND 4 ) / C

문제 You are given a binary sequence a_1,a_2,…, a_n of length n. You will also be given q queries of two different types. p t: replace a_p with t. l r x y: Find any [s, e] satisfying the following conditions, or report that none exists: l = b.cnt0_all && a.cnt0_all >= a.cnt0_right + b.cnt0_left) { tmp.cnt0_all = a.cnt0_all; tmp.cnt0_all_pos[0] = a.cnt0_all_pos[0]; tmp.cnt0_all_pos[1] = a.cnt0_all_..

[ BOJ ] 18407 : 가로 블록 쌓기 ( PLATINUM 3 ) / C

문제 가로 블록만 등장하는 테트리스 게임을 해보려고 한다. 가로 블록은 총 N개가 등장할 예정이고, 등장하는 순서대로 1, 2, ..., N번이다. i번 블록의 높이는 1이고, 너비는 Wi이다. i번 블록은 왼쪽 벽으로부터 거리가 Di 떨어진 곳에 떨어뜨려야 한다. 블록을 회전시키거나, 위치를 이동시키는 것은 불가능하다. 블록은 위에서부터 떨어지며, 다른 블록 또는 바닥을 만날때 까지 한 칸씩 떨어진다. N개의 블록 정보가 주어졌을 때, 블록이 쌓인 높이를 구해보자. 입력 첫째 줄에 블록의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에 블록의 정보 Wi, Di (1 ≤ Wi, Di ≤ 1,000,000,000)가 한 줄에 하나씩 1번 블록부터 순서대로 주어진다. 출력 블록..