분류 전체보기 (87) 썸네일형 리스트형 printf vs puts puts와 printf의 동작 상 차이점은 개행 여부이다. - printf는 개행을 해주지 않고, puts는 자동으로 개행을 해준다 puts와 printf의 사용 상 차이점은 formatting 여부이다 - printf는 formatting을 위한 가변인자가 존재하지만, puts는 고정된 문자열만 출력 가능하다. printf 는 사실 vfprintf의 wrapper 함수이다. (https://code.woboq.org/userspace/glibc/stdio-common/printf.c.html) vfprint는 puts에 비해 많이 복잡하다. 별다른 옵션을 주지 않는다면, printf 는 fputs로 최적화 될 수 있다고 한다. 이를 막고 싶다면, compile option에 -fno-builtin 을 .. Implicit declaration of function gcc로 컴파일하는 과정에서 Implicit declaration of function 메시지가 떴다. 위의 메시지는 prototype 선언 없이 함수를 사용하려고 할 때 뜬다고 한다. 예시로 다음과 같이 코드를 작성하면 Implicit declaration of function message가 뜬다. #include /*char ntoc(int a); // arm-none-eabi-gdb 설치 (Ubuntu 20.04) 요즘 『임베디드 OS 개발 프로젝트』보고있는데, arm-none-eabi-gdb 설치 시 package를 찾을 수 없다고 나온다. 나는 아래처럼 해서 문제를 해결했다. 1. 아래 사이트에서 운영체제에 맞게 압축 파일을 다운 받는다. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads GNU Toolchain | GNU Arm Embedded Toolchain Downloads – Arm Developer Download the GNU Embedded Toolchain for ARM, an open-source suite of tools for C, C++,.. functools.lru_cache (functools.cache) @functools.lru_cache(user_function) @functools.lru_cache(maxsize=128, typed=False) 최근 maxsize 개의 호출까지 기억하는 callable 함수의 decorator이다. 간단한 예제인 피보나치를 통해 동작방식을 살펴볼 수 있다. def fibo(n): print("now : %s"%n) if n < 2: return n return fibo(n-1) + fibo(n-2) print(fibo(5)) now : 5 now : 4 now : 3 now : 2 now : 1 now : 0 now : 1 now : 2 now : 1 now : 0 now : 3 now : 2 now : 1 now : 0 now : 1 5 아래는 decorator를.. BOJ 2013 선그리기 www.acmicpc.net/problem/2013 2013번: 선그리기 첫째 줄에 선분의 개수 N(1second.size(); it->second.pop(); while(it->second.size()){ auto after = it->second.top(); if(max >= after.first && after.first >= min){ answer -= 1; if(min > after.second) min = after.second; } else{ max = after.first; min = after.second; } before = after; it->second.pop(); } } printf("%d\n", answer); return 0; } 소수 처리때문에 애를 먹었던 문제였다. 처음엔 .. BOJ 14226 이모티콘 www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 해당 문제를 점화식으로 바꿀 수 있다. arr[ i*j ] = min ( arr[ i*j], arr[ i ] + j ) , j >=2 BOJ 1445 일요일 아침의 데이트 www.acmicpc.net/problem/1445 1445번: 일요일 아침의 데이트 첫째 줄에 숲의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 3보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 숲의 지도가 주어진다. 숲의 지도는 S, F, g, . 만으로 이루어져 있 www.acmicpc.net greedy하게 다음 경로를 선택하는 쪽으로 구현하면 될 것 같아서 다익스트라를 사용하였다. cost는 {쓰레기가 차있는 칸을 지나간 수, 쓰레기가 인접한 칸을 지나간 수} 로 해도 되지만, 나는 구현의 편의성 때문에 cost를 (쓰레기가 차있는 칸을 지나간 수) * 100000 + (쓰레기가 인접한 칸을 지나간 수) 로 하여 구현하였다. 코드는 다음과 같다. #include #in.. BOJ 1761 정점들의 거리 www.acmicpc.net/problem/1761 1761번: 정점들의 거리 첫째 줄에 노드의 개수 N이 입력되고 다음 N-1개의 줄에 트리 상에 연결된 두 점과 거리를 입력받는다. 그 다음 줄에 M이 주어지고, 다음 M개의 줄에 거리를 알고 싶은 노드 쌍이 한 줄에 한 쌍씩 www.acmicpc.net 예전에 틀린 문제들을 다시 풀어봤다. 이 문제는 가중치가 있는 tree에서 정점들의 거리를 구하는 문제이다. LCA를 구해서 cost[a] + cost[b] - 2*cost[lca] 를 구해주면 된다. (cost[i]는 root node 로부터 node i까지의 거리, dfs로 먼저 구해놓는다.) 여기까지는 쉽게 생각할 수 있을 것이다. 하지만, query의 존재 때문에, 하나하나 올라가서 LCA를 찾.. 이전 1 ··· 5 6 7 8 9 10 11 다음