본문 바로가기

분류 전체보기590

[C/C++] 백준 #2086 피보나치 수의 합(분할정복) 이번 문제는 피보나치 수열들의 합을 계산하는 것입니다. 언뜻, 피보나치 수열을 구해서 그 합을 구해야 할 것으로 생각할 수 있습니다. 수학식을 유도하는 것이 어려워서인지, 문제의 난이도는 Gold I 단계입니다. https://www.acmicpc.net/problem/2086 2086번: 피보나치 수의 합 제 1항과 제 2항을 1이라 하고, 제 3항부터는 앞의 두 항의 합을 취하는 수열을 피보나치(fibonacci) 수열이라고 한다. 예를 들어 제 3항은 2이며, 제 4항은 3이다. 피보나치 수열의 a번째 항부터 b번째 www.acmicpc.net 조금 생각해보면, 이 수열도 피보나치 수열과 다르지 않다는 것을 알 수 있습니다. 수학적으로 점화식을 이용해서 풀이를 하는 것이라서, 다소 생소할 수가 있습.. 2023. 3. 28.
후쿠시마 오염수 방류에 대하여 일단 오염수라 표현한 것의 일본식 표현은 처리수이며, 정확하게는 액체 방사성 폐기물(liquid radioactive waste)입니다. 2023년 봄에 방류 예정인 후쿠시마 오염수에 대해서 이야기를 하겠습니다. 2011년에 후쿠시마 발전소가 동일본 대지진의 쓰나미에 의해서 침수되고, 1~4호기가 모두 수소폭발과 함께 노심 용융이 되는 사고가 있었습니다. 당시에 전세계로 방출된 방사능 오염물질은 추산 체르노빌의 10% 정도일 것이라 하고, 악티나이드 계열은 0.01% 미만일 것이라고 합니다. 역사상 두번째로 큰 발전소 사고입니다. 일본 도쿄전력에서는 현재도 지속적으로 나오는 후쿠시마 원전의 오염수를 저장하고 있습니다. 2023년 봄 기준 130만톤의 오염수가 저장되어 있으며, 매일 120톤 정도의 오염수.. 2023. 3. 27.
[C/C++] 백준 #2075 N번째 큰 수(n'th element) N번째 큰 수를 찾으라는 이 문제는 특이한 조건을 가진 \(N \times N\) 2차원 공간에 들어가 있는 숫자 중 뒤에서 N번째 큰 수를 찾아서 출력하라는 것입니다. https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 처음 이 문제를 봤을 때, 저 조건을 잘 이용하면 되지 않을까라는 생각을 하고 고민을 했습니다. 하지만 결론은 문제에서 제시하는 조건은 쓸모가 없다는 것입니다. N개의 정렬된 상태의 배열이 있으니 합병을 생각할 수도 있지만, 결국 \(O.. 2023. 3. 25.
[C/C++] 백준 #2056 작업(위상정렬) https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net 이번 문제는 선행작업과 후행작업이 있을 때, 전체 작업시간이 얼마나 걸릴 것인지 판단하는 것입니다. 소프트웨어 공학에서 자주 발생하는 일입니다. 소프트웨어 공학에서도 선행작업과 후행작업이 있는 경우 작업 인력을 무한정 투입할 경우 마칠 수 있는 최소 시간을 구하게 됩니다. 이와 같이 작업의 선후가 있는 경우에 위상정렬을 사용하게 됩니다. 위상절렬은 작업의 선후에 따라서 정렬을 하는 것이지.. 2023. 3. 23.
[Python] 프로그래머스 - 디스크 컨트롤러(탐욕기법) 프로그래머스 코딩 테스트는 안 하다가, 지식인을 통해서 답변을 하면서 하게 되었네요. https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제에서 핵심은 작업을 관리하는 것을 어떻게 시뮬레이션할 것인가입니다. 현재 태스크에 있는 작업들은 모두 대기상태에서 어떤 것을 먼저 실행하는 것이 좋을까입니다. 태스크에 있는 작업이 한개뿐이라면 전혀 문제가 없겠죠. 하지만 여러개라면, 우선순위를 정해야 합니다. K개의 작업이 있다면, 먼저 수행하는 작업에 .. 2023. 3. 23.
[C/C++] 백준 #2042 구간 합 구하기(세그먼트 트리) 구간 합 구하기 문제는 전형적인 세그먼트 트리를 이용하여 푸는 문제입니다. 세그먼트 트리 이외에도 비슷한 방식들이 존재합니다. 세그먼트 트리를 이용하는 문제는, 1. 많은 수의 쿼리를 진행해야 하고, 2. 미리 연산한 결과를 사용할 수 있어야 하고, 3. 미리 연산한 결과를 수정해야할 경우가 많은 경우 형태일겁니다. 위의 조건이 만족하지 않는다면, 다른 방식으로 계산하는 것이 더 좋을 수 있습니다. 세그먼트 트리와 관련한 문제들은 다음과 같습니다. https://sdev.tistory.com/958 백준 #1849 순열(세그먼트 트리) 이번 문제는 N개의 배열에 1부터 N까지 한번씩만 숫자가 써져있는 a[i] 수열이 있을경우, A[i] 란 수열은 원래의 수열에서 i번째 수의 앞에 있는 수 중 i보다 큰 .. 2023. 3. 21.
728x90