etc 55

[11일차] Heap (1)

설 연휴가 끝나고 오랜만에 평일이 됐다. 연휴 동안에 SWEA에 들어가 보니 heap 자료가 이미 올라와있길래 두 문제 미리 풀었다. 그리고 오늘은 세 문제 풀어놨다. 5년 전 자료구조 수업에서 heap을 배우고 이게 뭐야 했던 기억이 있는데 이제는 heap이 뭔지 알고 있다. 오늘 SWEA에서 문제를 풀면서 분명 heap 시간인데 문제가 너무 DP스러워서 일단 DP로 시작했다. 그런데 문제를 풀다보니 DP로는 해결되지 않을 것 같았다. DFS나 BFS 둘 중 하나를 사용해야 할 것 같길래 일단 무지성 DFS를 했다. SWEA는 스택 메모리가 야박하다는걸 segmentation fault를 보고 깨달았다. 그래서 BFS로 문제를 해결하고 있는데 아무리해도 답이 안 나왔다. 알고보니 DFS할 때 썼던 bo..

[10일차] Code Battle

오늘은 따로 강의가 있진 않았지만 3시까지 주어진 문제를 푸는 날이었다. 문제를 푸는 것 자체는 그리 어렵지는 않았다. 문제를 풀고나서 더 최적화를 해보려고 했는데 시간이 끝나버렸다... 이런 식으로 문제 푸는걸 많이 안 해봐서 너무 나이브했다. 아마 삼분 탐색을 좀 잘하면 더 높은 점수를 받을 수 있을 것 같았는데, 이제 해볼까하고 자리에 앉았더니 허무하게 코드 배틀이 끝나있었다... 그래도 풀긴 풀었다...

[9일차] Tree (2)

어느새 2주차도 거의 끝나간다. 처음에는 되게 가볍게 생각하고 시작했었는데, 하다 보니 해야 하는 양은 많지만 얻는 것도 꽤 많은 것 같다. 대면일 때는 어떻게 진행했는지 모르지만 대면이었다면 훨씬 재밌었을 것 같다. 오늘은 문제를 한 문제밖에 안 풀었다. 사실 한 문제 더 풀긴해야 한다. 그런데 문제가 파일 시스템을 구현하는 문제라 너무 하기가 싫었다. 학기 중에 핀토스 프로젝트를 하면서 한번 지나온 내용이라 차마 시작할 수가 없었다. 나중에 여유가 생기면 하든지 해야겠다.

[8일차] Tree (1)

오늘은 트리에 관한 내용이었다. 오늘은 강의도 몇 개 있었다. 연구실에서 빌드 돌리면서 강의보고 문제도 풀었다. 오늘은 3문제를 풀었는데 모두 그리 어려운 문제는 아니었다. 거의 다 개념을 묻는 문제여서 쉽게 풀 수 있었다. 그런데 문제의 내용은 쉬웠는데 조건을 맞추는 게 그리 쉽지 않았다. 내가 생각하기에 필요 없는 입력도 받아야만 했다. 백준에서 문제를 풀 때는 내가 보통 풀이수가 많은 문제를 풀다 보니 이미 다녀간 사람들이 오류를 많이 수정해놨는데 SWEA에서는 내 눈에도 이상한 게 몇 개 있다. 오류라고는 할 수 없겠지만 백준에 비해 가독성이 조금 떨어진다. 그래도 프로그래머스처럼 바로 결과 볼 수 있는 건 좋은듯하다 내일 수강신청 담아놓기라서 급하게 시간표를 짰는데 시간표 짠 이후부터 뭔가 정신..

[7일차] DFS & BFS (2)

어제에 이어서 같은 내용으로 문제를 풀었다. 오늘은 총 3문제를 풀었다. 첫 번째 문제는 BFS에 관련 문제였다. 그런데 BFS를 구현하는 것이 중요하지는 않았다. 나는 LCA 알고리즘이 뭔지도 모르는 상태로 문제를 풀기 시작했는데, 두 시간 정도 붙잡고 있었음에도 문제를 푸는 게 쉽지 않았다. BFS 과정을 진행하면서 문제를 해결하려고 했었는데 그리 쉽게 되지 않았다. 게시판에도 나 같은 사람이 있길래 글을 확인해보니 LCA 알고리즘을 사용해보라는 댓글이 있어서 냉큼 LCA 알고리즘을 찾아봤다. 진짜 야무진 알고리즘이었다. 내가 구질구질하게 구현하려고 했던 알고리즘이 아주 깔끔하게 구현되어 있었다. 나는 O(logn)의 방법을 상상하지도 못했는데 세상에 똑똑한 사람들 진짜 많다. 백준에서 LCA 알고리..

[6일차] DFS & BFS (1)

월요일, 화요일 이틀 동안은 DFS와 BFS에 대해서 공부하게 된다. 내가 다른 문제 풀이 방법들에 비해 자신 있는 파트라서 보통 처음 문제를 보면 DFS를 사용할 수 있는지 확인하곤 했다. 그래서 이번엔 올라온 문제가 많긴 하지만 금방 풀 줄 알았다. 그런데 기초 DFS 문제를 푸는데 전혀 쉽게 풀리지 않았다. 문제가 직관적이지 못해서 이해하는데도 시간이 많이 들기는 했지만 이해한 이후에도 뭔가 잘 안 풀렸다. 결국 재귀 함수를 호출하기 전에 함수를 하나 더 호출하는 것으로 문제를 해결했다. 거의 두 시간 정도 걸린 것 같다. 마지막으로 푼 문제도 잘 안 풀렸다. 얘는 BFS 문제였는데 큐에 집어넣는 조건을 잘못 설정해서 계속 오류가 나는거였다. 결국 다 해결하기는 했지만 꽤나 애먹었다. 7일차도 그래..

Shell Script

연구실 인턴을 하면서 터미널 만질 일이 되게 많다. SmartSSD가 금방 뜨거워지기 때문에 터미널로 온도 체크를 하고 있어야 하고 Vitis platform을 실행하려면 또 터미널을 켜서 몇가지 명령어를 넣어줘야 한다. 쉘 스크립트에 대해서 전혀 모르고 있어서 매번 이렇게 직접 쳐야하나 싶었는데 사수분이 사용하시는걸 보고 나도 필요한만큼만 공부해서 사용 중이다. 1. test.sh 파일을 생성한다. 2. 생성한 파일의 내용을 다음과 같이 작성한다. #!/bin/sh 3. 원하는 내용을 추가로 더 작성한다. 4. 파일의 권한을 부여해준다. $ chmod 755 test.sh 5. 실행은 다음 3개 중에 하나를 입력하면 된다. $ ./test.sh $ bash test.sh $ sh test.sh 더 잘 ..

etc/memo 2022.01.23

[5일차] D&C

오늘 내용은 분할 정복에 관한 내용이었다. 강의는 분할 정복을 배우게 되면 거의 무조건 배우는 merge sort, quick sort, binary search에 관해 진행했다. 셋 다 처음 듣는 내용은 아니라 강의는 무난하게 들을 수 있었다. 근데 오늘 올려준 문제들은 쉽지 않았다. 이게 왜 분할 정복 인지도 모르겠다. 내가 다른 방법으로 풀려고 하려고 해서 그런가 도저히 어떻게 쪼개서 풀어야 하는지 감도 안 잡혔다. 총 5개의 문제가 올라왔는데, 일단 3개의 문제만 풀었다. 나머지 두 개는 더 어려운 문제 같다. 내일은 주말이니 내일 풀어봐야지. 근데 3문제 다 순탄치 못하게 풀었다. 알고리즘 문제 유형 중에서 DP를 제일 못하는 줄 알았는데 분할 정복이 복병인가...? 문제를 좀 더 많이 풀어봐야..

[4일차] DP

오늘은 내가 제일 싫어하는 유형인 DP에 대한 내용이었다. 나는 다른 유형에 비해서 유독 DP가 어려워한다. 구현 문제 같은 건 자질구레한 예외를 하나씩 처리해가는 게 짜증은 나도 맛은 있는데 반해서 DP는 아이디어를 떠올리지 못하면 손도 못 대겠다. 이름도 억지로 Dynamic Programming이라고 지은 것 너무 싫다. 처음에 들었을 때 도대체 이게 뭐지 싶은 이름이었다. 그래도 편식할 수는 없으니 공부는 해야지... 오늘 내용은 이미 학기 중에 들은 내용과 거의 비슷했지만 DP를 조금 스마트하게 처리하는 Brute-Force 방법으로도 생각할 수도 있다는 것을 듣고 신기했다. 사실 지금까지 DP를 BF랑 엮어서 생각해본 적이 없었다. 그런데 조금 생각해보니 맞는 말 같았다. 여러 알고리즘 기법이..

[1일차] Bit

얼마 전부터 삼성 대학생 S/W 알고리즘 특강을 듣게 됐다. 저번에 사전 문제를 풀었을 때는 당연히 떨어졌을 줄 알았는데 의외로 선발 메일이 왔다. 첫날 포스팅하는 것을 놓쳐서 3일째에 이제야 올린다...ㅋㅋ [BOJ] 1062 가르침 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단 uyt8989.tistory.com 첫날 느낀 점을 여기에다가 썼었는데 따로 포스팅하는게 좋지 않을까 해서 카테고리를 새로 팠다. 이번 주부터 연구실도 매일 출근하고 이것도 매일 들어야 한다. 저번 주까지만 해도 별로 안 바빴는데 급발진을 해버렸다. 동기 애들이랑 ..