[C언어] 백준 1927 최소 힙
·
백준 C언어
문제 널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. x는 231보다 작은 자연수 또는 0이고, 음의 정수는 입력으로 주어지지 않는다. 출력 입력에서 0이 주어진 횟수만큼 답을 출력한다. 만약 배열이..
[C언어] 백준 1759 암호 만들기
·
백준 C언어
문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다. 새 보안 시스템에서 조교들이 암호로 사용했을 법한 문자의 종류는 C가지가 있다고 한다. 이 알파벳을 입수한 민식, 영..
[C언어] 백준 11399 ATM
·
백준 C언어
문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다..
[C] strcmp / strncmp / memcmp 사용법과 구현 및 strncmp와 memcmp의 차이
·
C
참고로 이 함수들의 반환값은 1, 0, -1 이 세가지이며 서로 문자를 비교할 때 묵시적 unsigned char로 형변환 합니다!1은 왼쪽 문자가 더 큰경우-1은 오른쪽 문자가 더 큰경우0은 문자열이 같은 경우  1. strcmp#include int strcmp(const char *s1, const char *s2)s1 문자열과 s2 문자열이 서로 맞는지 확인해 주는 함수입니다. 문자열이 서로 맞다면 0, 다르다면 처음으로 다른 문자들의 차이값을 반환합니다. strcmp 구현 int ft_strcmp(const char *s1, const char *s2){ size_t i; i = 0; while (s1[i] == s2[i]) { if (!s1[i]) return (0); i++; } ..
[C] strcat / strncat / strlcat 사용법과 구현
·
C
문자열을 쓰다 보면 가끔 문자열을 합치고 싶을 때가 있습니다. 이때를 위해 C언어에서는 strcat 함수들을 제공하죠 strcat 부류 함수들은 문자열 뒤에 다른 문자열을 이어 붙여주는 함수입니다. strcat 함수들은 보통 strcat, ncat, lcat으로 분류 됩니다. strcat은 문자열에 문자열을 이어 붙여주는 함수 strncat은 문자열에 문자열을 n번 이어 븉여주는 함수 strlcat은 문자열에 문자열을 n - 1 번 이어 붙여주는 함수 이렇게 설명할 수 있겠네요 이번 포스팅에서는 이 함수들에 대해서 공부해 보는 시간을 가져보겠습니다. strcat #include char*strcat(char *restrict s1, const char *restrict s2) intmain(void) {..
[C] strlen / strcpy / strncpy / strlcpy 사용법과 구현
·
C
가끔 C언어를 하다보면 문자열 길이가 궁금할 때도 있고 문자열을 복사시키고 싶을 때가 있습니다.그럴 때 보통 string.h 헤더파일에 있는 함수들을 사용하죠 저희가 이번 포스트에서 볼 함수들은 문자열 길이를 구해주는 strlen 함수와문자열을 복사시켜주는 strcpy 계열의 함수! strlen 함수 먼저 보시죠  1. strlen#include size_t strlen(const char *s)#include int main(void){ char str[13] = "hello world!"; printf("%zu\n", strlen(str)); // 12}매개변수로 들어오는 s 문자열의 길이를 size_t 자료형으로 반환해 주는 함수입니다. 예를 들어 "hello world!" 이런..
[C언어] 백준 2108 통계학
·
백준 C언어
문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 ..
[C] itoa / atoi 구현
·
C
지금은 printf가 있어서 현재 값이 정상적으로 입력이 되었는지 %d나 %s로 쉽게 확인할 수 있습니다. 하지만 과거엔 printf가 없었고 write함수로 출력했었죠write함수는 문자열만 출력이 가능했었는데요 이때 정수를 write로 출력할 수 없었기에 정수를 문자열로 변환시켜 출력하곤 했습니다.그래서 주로 itoa함수를 사용해 정수를 문자열로 변환시켜 출력을 했었습니다. 그리고 반대로 사용자 입력 argv로 사용자 입력을 받은 문자열을 정수로 변환시켜야 할 때도 있습니다.이때는 보통 atoi 함수를 사용해서 문자열을 정수로 변환시켜 변수를 초기화 하곤 합니다. 이번 페이지에서는 itoa와 atoi함수를 보다 확실하게 이해하기 위해 구현하는 방법까지 살펴 보겠습니다.구현하기 앞서 우리는 ascii코..
원피스는 실존하다