목록TIL (17)
정글에서 온 개발자
list_begin VS list_front list_begin /* Returns the beginning of LIST. */ struct list_elem * list_begin (struct list *list) { ASSERT (list != NULL); return list->head.next; } list_front /* Returns the front element in LIST. Undefined behavior if LIST is empty. */ struct list_elem * list_front (struct list *list) { ASSERT (!list_empty (list)); return list->head.next; } 차이 list_begin은 초기화 여부(list_i..
배경 대부분의 PintOS 자료에서 sleep_list를 매번 순회하지 않기 위해서 next_tick_to_awake(이하 ‘글로벌 틱’)라는 전역변수를 하나 더 지정하여 sleep_list의 tick 최소 값을 표시하도록 한다.[Explicit] 이를 위해서는, sleep_list 전체 순회(thread_awake)를 할 때마다 ‘글로벌 틱’을 갱신한다. 전체 순회를 조금이라도 줄이기 위해서는 sleep_list에 넣을 때부터 깨야 하는 tick의 오름차순으로 정렬되게 삽입하여, 순회 중 깨우지 못하는 쓰레드를 만나면 순회를 중단시킬 수 있다. 이를 좀 더 생각해보면, sleep_list의 첫번째 요소는 항상 ‘글로벌 틱’이므로 get_next_tick_to_awake가 이를 활용하게 작성할 수도 있다..
문제링크 접근 재귀 재귀라고 써있기도 하고, 구조 자체가 큰 Z 안에 작은 Z가 들어가서 재귀로 접근하기로 함 색종이 자르기 등 다른 재귀와 유사함 재귀 함수 인자로 범위를 나타내는 인자를 주고, 안쪽 재귀에서는 범위를 줄여가면 될 듯 베이스 케이스는 범위가 좁아져서 최종 1일 때 범위는 가로, 세로가 같이 줄어드므로 둘 중에 하나만 검사하면 됨 수학적 계산 R,C가 있는 위치를 기준으로 앞쪽의 구역의 숫자 배치는 상관이 없고 맨 오른쪽 아래 귀퉁이 숫자만 중요함 각 범위별로 시작하는 숫자도 정해져 있음 결국에는 재귀적으로 범위를 줄여나가는 것이 편함 트라이 1. 재귀, 시뮬레이션 N,R,C = map(int, input().split()) M = [[0]*(2**N) for _ in range(2**N..
정렬 복습 화요 퀴즈를 봐야해서 빠르게 정렬을 복습했다. 2023.10.18 - [정리] - 주요 정렬 요약(8+2) 주요 정렬 요약(8+2) 나만의 언어로 암기해보기 버블 정렬: 이웃 교환의 연속 셰이커정렬 : 이웃교환을 위 아래 번갈아서 함 단순선택(선택 정렬) : 자리 정해서 한번에 새치기(원격 교환) 단순삽입(삽입 정렬) : 한명 krafton-jungle-essay.tistory.com 오픈 북이였는데도 퀵정렬 문제를 제대로 풀지 못한 걸로 봐서 아직 달달 외우진 못했다. 오늘 책을 보고 설명을 하는데, 피벗이 양쪽 끝에 있는 경우에도 설명이 막혔다. 다시 한 번 손으로 그려보면서 이해를 해야겠다. 면접과 구현에 관해 다시 한번, 가장 중요한 건 작동을 하는 코드다. 면접에서도 일단은 구현은 해..
루프 불변성 점진적인 방법에서 활용 가능하다. For 나 While 등 루프를 돌아도 변하지 않는 조건 알고리즘이 타당한 이유를 쉽게 이해할 수 있게 사용된다. 세가지 특징이 있다. 초기조건 : 첫번째 반복을 시작하기 전에 루프 불변성이 참이여아한다. 유지조건: 다음 반복이 시작되기 전까지도 계속 참이여야 한다. 종료조건: 루프가 종료될 때 그 불변성이 알고리즘의 타당성을 보이는데 도움이 될 유용한 특성을 가져야 한다. 귀납법과 비슷하다. 베이스가 참임을 보임 귀납적 과정을 증명함 +. 마지막으로 알고리즘의 타당성을 보이는 것이 중요 정렬 알고리즘을 풀기로 했으면 루프 불변성이 마지막에 정렬된 수열을 나타내야 하는 것. 분할 정복 재귀적 구조를 가진 알고리즘 중 하나 세단계 분할: 현재 문제를 같은 문제..
2023.10.16 - [정리] - 소수 구하기의 여러가지 방법과 시간복잡도 비교 ChatGPT 덕분에 이쁜 그래프도 넣을 수 있었다. 소수 구하기의 여러가지 방법과 시간복잡도 비교 관련문제 백준 1978 소수 찾기 백준 9020 골드바흐의 추측 메모이제이션 메모이제이션 : 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계 krafton-jungle-essay.tistory.com 2023.10.16 - [정리] - 파이썬 ‘=’ 이 연산자가 아니다 논란과 주의할 점 왜 썸네일이 귀여운 바다코끼리인걸까? 읽어보면 알 수 있다. 파이썬 ‘=’ 이 연산자가 아니다 논란과 주의할 점 사실 논란의 여지가 없다. ‘=’ 은 연산자(operator)가 아니라 **..
알고리즘을 풀기보다는 백준 문서를 읽고 궁금한 걸 찾는데 시간을 더 보냈다. https://www.acmicpc.net/blog/view/55 https://www.acmicpc.net/blog/view/70 https://dailyheumsi.tistory.com/32 작동 원리 줄바꿈 데이터 데이터의 끝에 ‘/n’ 이 들어오는 것이 원칙, 꼭 지켜지지는 않음 ‘/n’으로 입력의 끝을 검사하면 문제 생길 수 있음 널 문자는 하나의 문자로 취급. 널 문자는 공백과 다름. 언어별 조심해야 할 것들 C 오버플로우 조심 cio, cout 는 iostream float는 너무 부정확함 → double 쓰자 fflush 는 출력 스트림만 비울 수 있다. fflush(stdin)은 표준이 아님. rewind(std..