[ BOJ ] 10282 : 해킹 ( GOLD 4 ) / Python
·
-- 예전 기록/BOJ
문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 그로부터 일정 시간 뒤 a도 감염되고 만다. 이때 b가 a를 의존하지 않는다면, a가 감염되더라도 b는 안전하다. 최흉최악의 해커 yum3이 해킹한 컴퓨터 번호와 각 의존성이 주어질 때, 해킹당한 컴퓨터까지 포함하여 총 몇 대의 컴퓨터가 감염되며 그에 걸리는 시간이 얼마인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스의 개수는 최대 100개이다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 첫째 줄에 컴퓨터 개수 n, 의존성 개수 d, 해킹당한 컴퓨터의 번..
[ BOJ ] 1001 : A-B ( BRONZE 5 ) / C, C++, Python, Java
·
-- 예전 기록/BOJ
문제 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 > a >> b; cout
[ BOJ ] 1000 : A+B ( BRONZE 5 ) / C, C++, Python, Java
·
-- 예전 기록/BOJ
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 > a >> b; cout
[ BOJ ] 14495 : 피보나치 비스무리한 수열 ( SILVER 5 ) / Python
·
-- 예전 기록/BOJ
문제 피보나치 비스무리한 수열은 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
·
-- 예전 기록/BOJ
단계별 풀어보기 문제를 풀이하면서 기초 알고리즘을 다잡아 보자는 마음으로 단계별 문제 풀이를 시작하게 되었다. 문제 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 ] 21039 : Flip and Combos ( DIAMOND 5 ) / C
·
-- 예전 기록/BOJ
문제 A binary array is an array which each element can be either 0 or 1. Aleka has a binary array B or length N. The elements of B are indexed from 1 to N. Aleka will play with her array. She will run Q queries one after another. Each query can be one of the following type : FLIP L R: Flip all bits of B from index L to R, inclusive. Flipping bit is changing the value of a bit from 0 to 1, or from ..
[ BOJ ] 28057 : Binary Sequence and Queries ( DIAMOND 4 ) / C
·
-- 예전 기록/BOJ
문제 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
·
-- 예전 기록/BOJ
문제 가로 블록만 등장하는 테트리스 게임을 해보려고 한다. 가로 블록은 총 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번 블록부터 순서대로 주어진다. 출력 블록..
[ BOJ ] 3002 : 아날로그 다이얼 ( PLATINUM 2 ) / C
·
-- 예전 기록/BOJ
문제 아날로그 다이얼이란 0부터 9까지 각 숫자 중 하나를 항상 표시하고 있는 작은 기계이다. 다이얼에는 화면에 보이는 숫자를 1 증가시킬 수 있는 버튼도 있다. (9를 1 증가시키면 0이 된다) 상근이는 이러한 아날로그 다이얼을 N개 가지고 있고, 모두 책상에 일렬로 올려 놓았다. 왼쪽 기계부터 1번기계이며, 가장 오른쪽 기계는 N번 기계이다. 또, 기계의 앞에 무엇인가를 작성할 수 있도록 종이 두 장을 놓았다. 가장 처음에 상근이는 다이얼에 보이는 숫자를 첫 번째 종이에 적는다. 그 다음 다음과 같은 행동을 M번 반복한다. 1. 두 정수 A와 B를 고른 다음, 첫 번째 종이에 작성한다. (1 ≤ A ≤ B ≤ N) 2. A번째 다이얼부터 B번째 다이얼에 적혀있는 숫자의 합을 구한 다음에 두 번째 종이..
[ BOJ ] 9345 : 디지털 비디오 디스크(DVDs) ( PLATINUM 3 ) / C
·
-- 예전 기록/BOJ
문제 최근 유튜브와 같은 온라인 비디오 스트리밍 서비스 때문에 DVD 대여점들이 자취를 감추고 있다. 이러한 어려운 상황 속에서, DVD 대여점 주인들은 실낱같은 희망을 잡고자 인기있는 N개의 DVD들로 구성된 시리즈를 구매한다(각 DVD들은 0번부터 N-1 까지 이루어져 있다). ACM 대여점의 주인 원주연 또한 울며 겨자먹기로 인기있는 시리즈물을 구매했고, 진열을 하기 위해 맞춤형 선반을 주문제작 하였다(맟춤제작이기 때문에 선반의 번호 또한 0번부터 N-1 까지 이루어져 있다). 주연이는 매우 정갈한 사람이기 때문에 DVD를 진열할 때 i번 DVD는 i번 선반에 진열을 한다. 이 시리즈의 열렬한 팬인 민호는 주연이네 대여점에 시리즈가 입고되었다는 소식을 듣고 찾아왔다. 시리즈물은 연속으로 봐야 흥미가..
[ BOJ ] 24755 : Election Paradox ( SILVER 5 ) / Python
·
-- 예전 기록/BOJ
문제 In Oddland, the leader of the country is determined by a democratic election. The country is divided into an odd number of regions, in which each region has an odd number of voters. There are two (an even number!) political parties in Oddland, and the winning party is the one that wins the most number of regions. A party wins a region if it receives more votes than the other party in that reg..
[ BOJ ] 1849 : 순열 ( PLATINUM 5 ) / C
·
-- 예전 기록/BOJ
문제 1부터 N까지의 수들이 한 번씩 쓰인 수열이 있다. 그 수열에서 i 앞에 있는 수 들 중, i보다 큰 수들의 개수를 A[i]라고 정의하자. A[i]가 주어져 있을 때, 원래 수열을 구하는 프로그램을 작성하여라. 입력 첫째 줄에 수열 원소의 개수 (1 ≤ N ≤100,000)이 주어진다. 그리고 두 번째 줄부터 N+1 번째 줄까지 차례로 A[i]가 주어진다. 출력 N개의 줄에 걸쳐서 수열을 출력한다. (i번째 줄에는 i번째 원소를 의미한다) 풀이 과정 1부터 시작해서, 1보다 큰 수들이 앞에 최소한 A[1] 개 있다, 2보다 큰 수들이 앞에 최소한 A[2] 개 있다, 이런 식으로 수열을 작은 수부터 차례대로 배치한다. 모든 노드를 1로 설정하고 수를 배치했으면 0으로 바꿔 몇 번째에 수를 배치해야 하..