본문 바로가기

전체 글168

CHAPTER 1 : A Tour of Computer Systems 1.1 informaiton is Bits + Context the hello.c program is stored in a file as a sequence of bytes. 1.3 it pay to understand how compilation systems work optimizing program performance. we do need a basic understanding of machine-level code and how the compiler translates different C statements into machine code. understanding link-time errors. avoiding security holes. data and control informaitio.. 2023. 3. 26.
백준 14501 퇴사 c언어 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 사고과정) 1. 이중 배열을 쓸지 구조체를 결정! 나는 구조체 결정! 2. dfs를 사용해서 경우의 수를 다 확인해준다 -> N의 숫자가 작기 떄문에 문제 없을 것이라 생각 3. 전역 변수로 result를 한것을 이용해 최고 pay를 판별해준다 개선점 or 실생활 활용점) 1. 전반적으로 깔끔하지 못하다 ex) i, j 와 result 를 전역변수로 활용했으면 더 좋았을 것이다. 2. 지하철 시간별로 급행열차를 타냐 안 타냐로 최소의 시간으로 목적지에 갈 수 있도록 활용가능할 것 같다. 나의코드) #include typedef str.. 2023. 3. 10.
500배 빠르게 원하는 것을 얻는 20시간 학습법 | 조쉬 카프먼(Josh Kaufman) 1. 무엇을 하고 싶은지 결정하고 그에 필요한 기술을 분석한다 - 기술을 작은 단계로 세분화한다 - 실행하기 가장 쉬운 단계부터 도미노처럼 쓰러뜨린다. 2. 스스로 고치는 법을 충분히 배운다. - 3~5개정도의 리소스를 가지고 충분히 학습해본다 - 직접 해보면서 잘못된 부분을 찾고 고쳐나간다. - 더 나은 방법을 생각해본다 3. 집중을 방해하는 모든 것들을 제거한다. - 방해요소들이 주변에 있는 것만으로도 집중력이 떨어진다. 4. 최소 20시간 동안 연습한다. - 연습하는 동안 좌절구간을 맞이하는데 이때 자신이 멍청하다고 생각하지 않는다. - 좌절구간일 떄는 자신이 기분이 좋아질만한 것들을 알고 감정에 압박되지 않게 조절한다. 2023. 3. 10.
백준 13458 시험감독 c언어 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 사고과정) 1. 총감독이 감시할수 있는 인원수 B를 각 시험장 인원에 빼준다 이떄 나온 값이 0보다 작거나 0일때는 굳이 부감독 넣을 필요 없다. 따라서 이런경우 count즉 감독인수만 한번 올려준다. 2. 위의 경우가 아닐경우 인원수에 B를 빼주고 이 뺴준값들에 부감독이 감시할수 있는 인원 C를 나누어 줄건데 몫이 0일 경우 부감독 1명으.. 2023. 3. 9.
백준 11659 구간합구하기4 c언어 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 나의 첫번쨰 접근코드) #include int main() { int N,M,i,j,result; int first[100000] = {0}; int last[100000] = {0}; int arr[100000] = {0}; scanf("%d %d", &N, &M); i = 0; while (i < N) { scanf("%d", &arr[i]); i++; } i = 0; .. 2023. 3. 2.
leaks 누수위치 추적하는 방법(MallocStackLogging방법) 1. iterm 창을 두개 실행시킵니다. 2. 하나의 iterm에 export MallocStackLogging=1 을 쳐서 환경변수 설정을 해줍니다. 3. 프로그램을 실행시켜 줍니다. 이때 실행파일을 만들려고 컴파일 할때 -g 라는 옵션을 넣어준다 ex) 4. 다른 iterm창에서 leaks --list 실행한파일명 위와 같이 적고 엔터를 누르면 5. 위와 같이 Call stack 이 뜨고 뒤에 메모리 누수가 난곳이 ft_strjoin.c :28 이렇게 ft_strjoin.c함수의 28번째 줄에 일어나고 있다는 것을 알수있습니다. 2023. 2. 17.
백준 13305 주유소 c언어 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 사고과정) 1. 이중 while문을 사용하여 문제를 해결할려고 접근 2. 굳이 이중 while문을 사용하지 않고 하나만 써도 가능할것이라 생각이들었음 3. 주유소1*(도로1) + 주유소1*(도로2) == 주유소1 * (총 도로) 라는 논리를 이용해서 문제해결 4. 주유소 1과 주유소 2를 비교하여 더작은 주유소를 기준으로 도로를 곱해준다. 개선점 || 비판점) 1. 굳이 N에 lon.. 2023. 2. 15.
백준 11399 ATM c언어 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 사고) 1. 각 사람들의 기다리는 시간의 합을 구하는 문제인데 딱 보자마자 오름차순 정렬로 다 합쳐서 답을 구하면 될것이라 생각했다. 2. 오름차순 정렬에는 여러가지 방법들이 있지만 내가 알고 있는 정렬중에서 qsort정렬을 사용하기로 생각했다. 3. qsort함수가 빠르게 정렬할수 있다고 생각했다. 4. 정렬한후 각 사람당 기다리는 시간을 더해주는데 이때 while문을 한번더 사용하여 앞에 기다리는 시간도 합쳐질수 있도록했다.. 2023. 2. 14.
백준 11650 좌표정렬하기 c언어 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 사고과정) 1. 퀵정렬을 이용해서 해결할려고 하니 내가 알거 있는 퀵정렬은 배열 하나만 사용해서 정렬하는 것이라 알고 있다. 2. 그래서 구조체를 이용해서 접근 하기로 생각했다. 3. 구조체 선언후 퀵정렬을 사용한다 이때 퀵정렬의 비교함수 부분을 아래와 같이 고쳐서 사용했다. 개선점 || 비판점) 나의코드) #include #include ty.. 2023. 2. 12.
백준 1427 소트인사이드 c언어 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 버블정렬이 생각났지만 비효율적인 정렬 방식이며 qsort정렬도 배웠기 때문에 이걸 이용하기로 결정 2. 기존 내가 알던 qsort정렬은 오름차순만 알고 있었는데 compare함수에 부호만 반대로 하면 내림차순이라 쉽게 만듬 3. 처음 배열을 result[] = {0}; 이렇게 선언하니까 세그먼트 오류가 떴다. 4. 그래서 어차피 숫자가 11자리가 최대이기 떄문에 result[11] = {0}; 로 바꿔 선언해주니 맞게 되었다. 나의코드) #include #include int .. 2023. 2. 3.
728x90