sw사관학교정글 7

[week08] PintOS - Project 1(thread) : Priority scheduling(3) donation

Project1: priority schedule(3) Priority Inversion Problem 문제 : priority 높은 thread가 priority가 낮은 thread를 기다리는 현상 L, M, H는 thread의 이름이라고 하자. 그리고 우선순위는 H가 가장 높고, L이 가장 낮다. 지금 M보다 H가 우선순위가 높은데, L이 lock을 가지고 있기 때문에 H는 실행되지 못하고, L보다 우선순위가 큰 M이 먼저 실행된다. H는 M이 다 끝날때까지 기다려야 한다. 해결책 : priority donation H이 lock을 획득하려고 요청할 때, L에게 자신의 priority를 donate(기부)한다. 이렇게 되면 M보다 H가 먼저 실행되어서 문제를 해결할 수 있다. 그러나 이렇게 간단하게 ..

[week02] WIL - 2주차 회고 및 배운내용 정리

📷 회고 2주차에는 조원 형의 추천으로 문제들의 속도, 메모리, 코드길이를 적어서 google sheet에 올렸다. 이 방법을 사용하니까 더 속도를 높이려면 어떻게 해야하는지 상대방의 코드를 참고할 수 있어서 좋았다. 각자의 코드는 github repository를 각자 파서 올리고 그 주소를 공유해주는 식으로 볼 수 있게 했다. 추이를 살펴보니 같은 문제에서 속도와 메모리는 반비례관계가 있는 듯 했다. 속도를 빠르게 하기 위해 여러 작업들을 추가할수록 메모리 사용이 늘어나는 것 같다. 각자 풀다가 이렇게 가다가는 다 못풀 것 같아서 회의를 통해 진도를 맞추고 1시간 고민, 못풀면 1시간 답보고 이해, 그래도 이해못하면 1시간동안 서로 알려주는 식으로 진행했다.(1-1-1) 1주차와 비슷하게 혼자 힘으로..

[week02] 백준 5904번 파이썬 풀이

왜 틀렸는지 메모리초과의 늪에서 한참동안 빠져있던 문제였다. 찾는 N의 범위가 1~10억 이기 때문에 배열에 Moo 수열을 만들어서 넣으면 메모리 초과가 뜬다. 그래서 m의 위치만 배열에 집어넣어도 마찬가지로 메모리 초과가 난다. 큰 수를 배열에 넣는 순간 메모리를 많이 잡아먹는 것을 처음부터 생각해서 배열에 넣는 방식말고 다른 방식을 사용했어야 했는데 그러지 못했다. 접근방법 배열에 수열, m의 위치를 넣지 못한다면 n이 Moo수열의 몇 번째 원소인지 어떻게 찾아낼 것인가? 길이를 사용하면 된다 !.! 문제에서 주어진 점화식은 S(K) = S(K-1) + (3+K) + S(K-1) 이고 이는 S(K) = 2*S(K-1) + K + 3으로 쓸 수 있다. 그런데 여기서 S 수열을 S 수열의 길이로만 바꿔주..

[week02] 정렬 + 이진탐색 vs 선형탐색(순차탐색) 시간복잡도

점근 표기법(Asymptotic Notation) 점근 표기법은 어떤 함수의 증가 양상을 다른 함수와의 비교로 표현하는 수론과 해석학의 방법이다. 우리는 이를 알고리즘의 복잡도를 단순화할때 쓴다. 어떻게? 가장 큰 영향을 주는 항만 계산하는 방식으로 단순화 시킨다. 점근적 표기법에는 대표적으로 3가지가 있다. 최상의 시나리오를 기준으로 하는 표기법: 오메가 표기법 평균적인 시나리오를 기준으로 하는 표기법: 세타 표기법 최악의 시나리오를 기준으로 하는 표기법: 빅오 표기법(Big-O Notaion) 우리가 주로 사용할 빅오 표기법은 실행 시간의 상한을 나타내며, 다른말로 하면 최악을 생각하는 경우이다. 컴퓨터공학자들은 일반적으로 최악을 상황을 고려하고 프로그래밍을 짜기 때문에 Big-O 표기법을 많이 쓴다..

[week01] WIL - 1주차 회고 및 배운내용 정리

📷 회고 정말 정신없었고, 개발실력에 관한 나의 무능함을 일깨워준 정글에서의 0주차(4일)가 지나가고 팀원들과 합심하여 주어진 문제를 해결하는 1주차가 다가왔다. 같은팀 조원들과 이제 막 친해진것 같은데 바로 헤어지게 되어서 아쉬운 감정이 컸다. 그러나 아쉬운 감정을 길게 가져갈 새도 없이 과제가 쏟아져나왔다. 1 ~ 4주차는 알고리즘 문제풀이 주차인데, 1주차의 키워드는 다음과 같다. [정수론, 배열, 문자열, 재귀함수, 정렬, 완전탐색, 시간복잡도] 기초적인 문제들이 많았기 때문에 시간은 넉넉할 것이라고 판단하고 각자 문제를 풀고 모르는 문제는 서로 도와주는 식으로 이번 주를 진행하기로 했다. 그러나 정말 큰 착각이었다. 주어진 시간 안에 모든 문제를 풀기조차 빠듯했고 시험 전날 밤이 되어서야 모두 ..

[week01] 찬찬히 나를 돌아보는 시간

🐾 지나온 과거에 대한 성찰 나의 과거를 한 문장으로 정리해 보면 "생각은 많으나 실행력이 그에 미치지 못함"으로 요약할 수 있을 것이다. 책이나 여러 매체를 통해 지식을 습득하고, 누군가의 조언을 듣고, 내 생각을 정리해 보는 시간은 많이 가졌다. 책을 많이 읽었지만 내 삶이 드라마틱하게 바뀌지는 않았고 그 이유는 너무나도 명확했다. 실행에 옮기지 않았기 때문이다. 내가 직접 경험해 보지 않은 간접경험들은 분명 나의 사고의 깊이를 더하는데 큰 도움이 되었겠지만 결국 내 인생은 바뀌지 않았다. 어느 순간 나는 행동하지 않으면서 남들을 평가만 하는 '비평가'의 포지션으로 가고 있다고 느껴졌다. 내가 실제로 행동하지 않고 지식만 습득하니까 내가 쌓아왔던 지식들이 남들을 더 잘 평가하는데 사용되어갔다. 내가 ..

[week00] - "최악의 음식 조합 리스트" 기획안

필수요소 로그인 기능 jinja2 템플릿 엔진을 이용한 서버사이드 렌더링 기획의도 처음에는 최상의 음식 조합을 시도하려 하였으나 사람마다 다른 입맛을 갖고있기 때문에 순위를 매기는 것에 의미가 크지 않다고 생각했습니다. 반대로 최악의 조합을 해본다면 사람이 혐오하는 것은 대체로 비슷하기 때문에 좀 더 의미있게 순위를 매길 수 있다고 생각했습니다. 최상보다는 최악의 조합이 더 재미있고, 사용자의 창의력을 더 자극할 수 있을 것 같아서 최악의 음식 조합을 주제로 채택하게 되었습니다. 와이어프레임 login 페이지 기본적인 로그인 화면이 있고 회원일경우 시작하기를 누르면 main 페이지로 이동 계정이 없다면 버튼을 눌러 페이지 확장하여 회원가입 회원가입하면 자동로그인후 main 페이지로 이동 패스워드 재확인 ..