본문 바로가기

분류 전체보기154

3973 Time To Live (c++) 다른 문제들을 풀다 막힘이 생기면 쉽게 쉽게 알고리즘 분류를 켜고 정답 코드를 찾아봤던 것과는 다르게 이 문제는 처음부터 끝까지 혼자 고민하며 온전히 나 스스로 해결하게 될 것이다. 문제 링크 : https://www.acmicpc.net/problem/3973 -- 문제 풀기 전에 했던 고민 -- 실수 1 문제를 잘못 이해해 트리의 전체 TTL값을 최소로 하기 위한 방법을 고민하였다 관찰 1 최대 TTL값은 항상 Leaf node에서 발생한다 - Leaf node마다 bfs를 돌려서 마지막에 만나는 곳을 라우터로 하여 정답을 찾는다 (?) -- 첫 다짐을 깨버리게 되었다. 정답 풀이 어느 한 지점에서나 bfs를 돌리면 마지막에 방문하게 되는 노드(이 노드는 무조건 leaf일 수 밖에 없음)는 길게 늘어.. 2022. 8. 7.
백준 13913 메모리초과(c++) 부모배열을 통해 탐색 여부를 판단했다(parent[n] != 0) 하하... 하지만 parent[n]은 0으로 지정될 수도 있다는 것을.... 기억하자 2022. 8. 5.
9177 단어 섞기(dp, c++) 주석처리한 부분 사용했으니 i도 j도 다음으로 넘겨줄 수 있게 되는 것 이다....... #include using namespace std; typedef long long ll; typedef pair pii; #define pb push_back #define ff first #define ss second #define fast_io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) int dp[210][210]; string s1, s2, s3; int main(){ fast_io; int n; cin>>n; for(int t=1;t 2022. 8. 5.
C++ 1ll(1LL)이란 Codeforces의 editorial을 보면 자주 나오는 요소가 있다. 바로 1LL(1ll)이다. 1ll이 어떠한 역할을 하는 걸까? 알아보도록 하자. 위 코드의 출력은 무엇일까? 전혀 예측할 수 없는 값이 나온다. int형으로 선언된 변수 n의 범위를 벗어나 overflow가 발생한 것이다. // int는 32비트를 사용하는 변수이다. 그렇다면 이 코드의 출력은 어떻게 될까? 컴파일러가 warning 해주는 그대로이다. C++에서는 기본 연산을 int(-2^31+1 ~ 2^31-1) 내에서 진행한다. 따라서 1번 코드와 똑같은 Integer overflow가 발생하는 것이다. 이쯤에서 1ll이 무엇인지 어떤 역할을 하는지 설명해보도록 하겠다. 1ll을 '1'과 'll'로 두 개로 쪼갤 수 있다. 앞의.. 2021. 11. 24.
using namespace std의 위험성에 관하여(PS) 글 제목이 다소 자극적으로 보일 수 있어서 결론부터 말씀드리겠습니다. using namespace std는 저희가 짜는 코드(PS)에는 매우매우매우매우 안전합니다. C++을 통해 PS 코드를 작성하게 될 때 꽤 많은 사람들이 겪는 현상이 있습니다. using namespace std; 가 어떤 기능을 하는지도 모른 채 이를 사용하는 것입니다. 물론 using namespace std;의 역할 기능을 필수적으로 알아야 하는 것은 아니지만 매일같이 작성하시는 이 코드를 이해함으로써 만약 추후 작성하실 코드에 오류가 발생하신다면 이에 대해 빠르게 대처할 수 있고 이 코드를 이해한다는 사실만으로 더욱 행복해질 수 있기 때문에 이번 기회에 알아가시면 좋을 것 같습니다. 본격적으로 위험성에 대하여 소개해드리기 전에.. 2021. 11. 23.