02/22 TIL
22 Feb 2019 | TIL알고리즘 스터디
- 백준 15683번 감시 문제를 기회가 되서 다시 풀어봤다.
- 아직도 실력이 부족하다고 느끼는 것이 vector를 자유자제로 사용할 줄 모르고, 좀 더 깔끔하게 풀 수 없다는 것에 안타까웠다.
- 특히, 오늘 실수를 많이 하였다. 꼼꼼히 봐서, 실수를 잘 줄여야 겠다.
if(!(0 <= nr && nr < N && 0 <= nc && nc < M)) // 위와 같이 작성하는 것이 맞는데, 우측 M 부분을 N이라고 하였다. - vector는 단순 정적 배열에 비해 느리지만, 구조체등을 같이 사용할 수 있고 size 정보를 가져올 수 있다는 점에서 뛰어나다. 또한, copy map을 만들 때도 코드 한 줄로 copy할 수 있기에, 좀 더 깔끔하게 짤 수 있다.
vector<vector<int>> S; /* N 크기의 인접 리스트 생성? (= int arr[N][])*/ S = vector<vector<int>>(N); //아직 할당된 공간은 없다. /* N * M 크기의 이차원 배열 할당(모두 0으로 초기화) */ S = vector<vector<int>>(N, vector<int>(M)); /* N * M 크기의 이차원 배열 할당(모두 -1으로 초기화) */ S = vector<vector<int>>(N, vector<int>(M, -1));vector<int> Z; /* N 크기의 일차원 배열 할당(모두 0으로 초기화) */ Z = vector<int>(M); /* N 크기의 일차원 배열 할당(모두 -1로 초기화) */ Z = vector<int>(M, -1); - 백준 2146번 다리 만들기는 두 가지로 나누어 생각하면 될 듯하다.
-
어떻게 각 영역을 나눌 것인가? : 모든 칸을 돌면서, BFS로 바꾸어 준다.
-
서로 다른 영역 사이의 최단거리는? : 모든 칸에서 BFS를 호출하고, 다른 영역이 나오면 break해서 현재 최소값과 비교하여 더 작은 것을 택한다.
-
나의 생각
-
취업이 곧 오는 거 같아서 조금의 스트레스는 있지만, 꾸준히 노력한다면 좋은 결과가 있을 거라고 믿는다.
-
오늘 영상을 하나 봤다. 나에게 좋은 영향을 주는 것 같아서, 영상을 요약하여 작성하겠다.
나는 어떤 모임에 처음 가서, 사법고시 붙으신 분이 웃고 계신 걸 봤다. 그래서 ‘사법고시 붙어서 기분이 좋아보이는 구나…‘라고 생각했는데, 옆에서 “쟤 항상 저렇게 웃어”라고 하였다. 그래서 궁금했다.
‘어떻게 사법고시를 하던 와중에도 웃고 있을 수 있지?’라며…
형한테 가서 물어보니… 처음에 ‘공부를 열심히 했는데, 못 붙으면 어떻게 하지?’라며 걱정했다고 한다.
그러다가 어느날 사법고시까지 공부할 양을 정하고, 그 양을 하루씩 나누어서 하루만 잘 공부하면 합격하겠다라며 하루를 열심히 살았다고 한다. 그렇게 되니 자신은 과정 속에서도 합격을 하고 있었다고 한다. -
위의 영상을 보고 나니 나도 하루하루 합격해보고, 하루하루 즐기고 싶다는 생각이 들었다. 너무 초조하게 매일을 보내지 말고, 매일의 분량을 정하고 성실히 이행하자.
다만, 내가 인턴을 하려면 어떤 역량을 보유하고 있어야 하는지 현실적으로 그걸 얻는 것이 가능하지를 고민하고 생각해보자.
CodingBear의 개발 블로그