dpcks5959의 등록된 링크

 dpcks5959로 등록된 티스토리 포스트 수는 34건입니다.

[42 seoul] Born2beroot "탄식의 정점" 푸는법 (3) [내부링크]

이번 포스트가 born2beroot의 마지막 포스팅이 될것같다. 목차 - 호스트 - 포트포워딩 - 파티션 - 크론과 쿼츠 크론 - script monitoring 호스트 노드란? - 네트워크에 연결된 모든 물리적 기기 또는 장치이다. 호스트란? - 노드 중에서 애플리케이션을 실행할 수 있는 컴퓨팅 시스템을 갖춘 기기이다. 쉽게 말해 네트워크게 연결된 컴퓨터라 볼 수 있다. 사용자가 애플리케이션을 실행해 네트워크에 접속할 수 있는 창구 역할을 한다. 포트포워딩 (port forwarding) 포트(port)란? - 네트워크 상에서 통신을 할 때 ip를 토대로 해당 서버에 접근한다. 그런데 서버가 여러개 실행되고 있다면 우리는 컴퓨터에서 어떤 서버에 접근할지 알려주어야한다. 이때 사용되는 것이 포트 번호(p..

[C] strcat / strncat / strlcat 사용법과 구현 [내부링크]

문자열을 쓰다 보면 가끔 문자열을 합치고 싶을 때가 있습니다. 이때를 위해 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언어를 하다보면 문자열 길이가 궁금할 때도 있고 문자열을 복사시키고 싶을 때가 있습니다. 그럴 때 보통 string.h 헤더파일에 있는 함수들을 사용하죠 저희가 이번 포스트에서 볼 함수들은 문자열 길이를 구해주는 strlen 함수와 문자열을 복사시켜주는 strcpy 계열의 함수! strlen 함수 먼저 보시죠 strlen #include size_tstrlen(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 통계학 [내부링크]

문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 ..

[C] itoa / atoi 구현 [내부링크]

지금은 printf가 있어서 현재 값이 정상적으로 입력이 되었는지 %d나 %s로 쉽게 확인할 수 있습니다. 하지만 과거엔 printf가 없었고 write함수로 출력했었죠 write함수는 문자열만 출력이 가능했었는데요 이때 정수를 write로 출력할 수 없었기에 정수를 문자열로 변환시켜 출력하곤 했습니다. 그래서 주로 itoa함수를 사용해 정수를 문자열로 변환시켜 출력을 했었습니다. 그리고 반대로 사용자 입력 argv로 사용자 입력을 받은 문자열을 정수로 변환시켜야 할 때도 있습니다. 이때는 보통 atoi 함수를 사용해서 문자열을 정수로 변환시켜 변수를 초기화 하곤 합니다. 이번 페이지에서는 itoa와 atoi함수를 보다 확실하게 이해하기 위해 구현하는 방법까지 살펴 보겠습니다. 구현하기 앞서 우리는 as..

[C언어] 백준 2805 나무 자르기 [내부링크]

문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15..

[C언어] 백준 5430 AC [내부링크]

문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 함수이다. 배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 최대 100이다. 각 테스트 케이..

[42 seoul] Born2beroot "탄식의 정점" 푸는법 (2) [내부링크]

이번 글에서는 주요 명령어들과 서비스들을 설명하겠다. UFW (Uncomplicate firewall) ufw란? 데비안 계열 및 다양한 리눅스 환경에서 작동되는 사용하기 쉬운 방화벽 관리 프로그램이며 간단한 명령 및 명령수가 적은 명령줄 인터페이스를 사용하는 것이 특징이고 프로그램 구성에는 iptables를 사용한다. UFW는 기본적으로 18.04 LTS 이후의 모든 데비안 및 우분투(Ubuntu)에서 사용할 수 있다. ufw를 사용하는 이유 리눅스에는 기본 방화벽인 iptables가 있다. 그런데 굳이 UFW 방화벽을 사용하는 이유는 사용 난이도에서 차이가 난다. UFW는 약자에서도 볼 수 있듯이 복잡하지 않은 방화벽으로써 iptables랑 비교했을 때 조작 난이도가 훨씬 쉽기 때문에 사용한다. 결코..

[C언어] 백준 7576 토마토 [내부링크]

문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 격자모양의 상자들..

[C언어] 백준 2504 괄호의 값 [내부링크]

문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다. ‘()’ 인 괄호열의 값은 2이다. ‘[]’ 인 괄호열의 값은 3이다. ‘(X)’ 의 괄호값은 2×값..

[알고리즘] DFS(Depth First Search) 깊이 우선 탐색 [내부링크]

코딩테스트에서 자주 쓰이는 알고리즘 중 하나입니다. 트리 구조에서 목표 노드까지 깊이 우선 탐색해 빠르게 목표 노드까지 갈 수 있는 알고리즘 중 하나죠 이와 비슷한 알고리즘 중 하나인 BFS란 알고리즘도 있는데 그 알고리즘은 너비 우선 알고리즘 으로써 큐 자료구조를 사용하고 DFS는 스택 자료구조를 사용합니다. DFS는 일반적으로 재귀 함수를 이용합니다. 목차 1 . 스택 자료구조의 이해 2 . DFS의 특징 3 . DFS 코드 예제 (C언어) 4 . DFS 문제들 (백준) 1-1 스택이란? 스택(Stack)은 쉽게 프링글스 과자 통을 생각해 봅시다. 과자통이 있고 맨 위쪽부터 맨 아래쪽까지 과자가 들어 있죠 이 상황속 저희가 과자를 어떻게 먹죠? 위에서 부터 먹습니다. 즉 맨 아래쪽에 있는 과자를 먹기..

[C언어] 백준 2667 단지번호붙이기 [내부링크]

문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수를 출력하시오. 그리고 각 ..

[C언어] 백준 1049 기타줄 [내부링크]

문제 Day Of Mourning의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다. 따라서 새로운 줄을 사거나 교체해야 한다. 강토는 되도록이면 돈을 적게 쓰려고 한다. 6줄 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다. 끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 필요한 돈의 수를 최소로 하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. ..

[C언어] 백준 1541 잃어버린 괄호 [내부링크]

문제 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력 첫째 줄에 정답을 출력한다. 예제 입력 1 55-50+40 예제 출력 1 -35 예제 입력 2 10+20+30+40 예제 출력 2..

[C언어] 백준 9095 1, 2, 3 더하기 [내부링크]

문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 1 3 4 7 10 예제 출력 1 7 44 274 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케..

[42 seoul] Born2beroot "탄식의 정점" 푸는법 (1) [내부링크]

지금 까지 과제를 푸는동안 3일을 넘긴적이 없는데 이놈은 무려 7일이나 걸렸다. 뭔가 될듯하면 부족한 지식이 꼬리의 꼬리를 무는듯한 과제이고 직접 요약한 내용을 보지 않고 설명할 수 있을 때까지 공부를 하니 오래 걸린듯 하다. 참고로 보너스는 없으니 보너스는 다른 블로그를 참고하길 바란다. 가상 머신을 설치하는 과정도 생략되니 그것 또한 다른 블로그를 참고하길 바란다. 또한 내가 당시 과제를 풀었을 기준 Rocky vs Debian이 아닌 CentOS vs Debian이니 이것 또한 참고하길 바란다. mandatory만 하는경우 이 블로그에서 정리한것만 달달 외우면 반드시 통과할 수 있을 것이다. born2beroot 평가지 기준으로 작성했고 그 이외 평가 도중 추가 질문이 들어올것 또한 예상해서 작성했..

42서울 온라인 테스트 합격 후기 [내부링크]

42 서울 이란? -42SEOUL(42서울)은 대한민국의 과학기술정보통신부에서 소프트웨어 인재를 양성할 목적으로 설립한 교육기관 이노베이션 아카데미에서 운영하는 교육과정이며, 프랑스에서 시작된 소프트웨어 교육기관 에꼴42(Ecole 42)의 교육 방식 및 인프라를 수입하여 실시하는 형태를 띠고 있다. 학습 공간은 서울특별시가 개포동의 개포디지털혁신파크를 제공한다 (쉽게말해 흔히 말하는 IT 국비 교육 기관) 42서울은 한국 뿐만 아니라 세계적으로 뻗어나가있는 교육 기관인것 같다 장점 -나같은 백수에게 공부하면서 월100을 주는 IT인재 양성 기관 -누군가가 지도하는게 아닌 나와 비슷한 수준의 사람들과 서로 피드백하며 성장하는 커리큘럼 -교수, 교재, 학비가 없는 3無 교육 -(개인 관점) 세계적 교육..

42서울 체크인 미팅 신청 후기 및 꿀팁 [내부링크]

신청방법은 42서울 홈페이지 > 지원하기 > 로그인 > 지원 화면 신청 시간 전이나 실패한 창에는 웹페이지 밑부분에 아무것도 없다 성공하면 초록색 등록 버튼과 함께 무슨 문장이 적혀있다(아쉽게도 흥분상태여서 스샷 못찍고 바로 눌러버림..) 등록 버튼을 누르고 나면 아래 사진처럼 큐알 코드랑 일정이 나온다 신청 팁 다른 글들을 보면 피시방을 가야한다 네이비즘 서버시간 사이트 사용해야한다 휴대폰 병행해서 해야한다 등등 많지만 나는 셋다 안했다 노트북으로 진행했었고 그다지 좋은 노트북도 아니었고 병원에서 했던지라 한곳에 40명 넘는 공간에서 신청했어도 충분히 됐었다.(사실 누나한테 부탁해서 같이 했지만 두명 다 성공 했음) 1 . 좋은 컴퓨터로 하면 더 좋은건 팩트(좋은 컴퓨터와 좋은..

42서울 라피신 8기 2차 후기 [내부링크]

사실 라피신이 끝난지 좀 지나긴 했는데 그냥 올려보려한다. 라피신이란? 간단하게 설명 하자면 42ecole에서 내려온 교육과정을 수강하기 전 질 좋은 수강생들만 걸러내기 위한 한달 동안 개발 적성 확인 하는 과정이다 라피신 솔직 후기 솔직히 힘들었지만 너무 재밌었다. 가끔씩 밤새워가면서 공부를 했었고 평가자가 억지로 틀렸다고 한적도 있고 러쉬 팀원이 빌런이었지만 그래도 다른 분들과 같이 으쌰으쌰하면서 문제를 풀고 같이 머리를 맞댔던게 깊은 유대감 속에서 공부하는것 같아 불합격 생각 않고 열심히 할 수 있었다. 피신 도중 tig먹어서 그린 그림 ㅋㅋ 중간에 tig를 먹어서 벌칙을 받았는데 쉼터에서 공익 포스터를 그리라 해서 밧줄에다가 담배 묶어놓고 1문제당 1담배 당신의 폐는 안녕하십니까? 하려다가 컷..

42서울 라피신에 관한 팁들 [내부링크]

Shell(Linux) 솔직히 알 필요는 없지만 알고 가면 좋긴 하다. 마치 한자 능력 검정 5급 자격증과 같다. 각 명령어에 대한 기본 내용만 알려줄 뿐 어떻게 쓰는지는 직접 구글링 하는게 좋을것이다. 실제로도 한 블로그에서 다 알려주는 것 보단 구글링을 하며 어떤식으로 검색해야 하는지에 대한 요령이 생겨야 하기에 일부러 기본 내용만 알려주겠다. -- 기본적인 명령어 -- 1 cd 명령어 : 현재 디렉토리에서 다른 디렉토리로 위치를 바꿀 수 있다. 절대 경로와 상대 경로에 대한 이해가 필요하다. cd -, cd .., cd ~ 이 세가지는 반드시 알고 갈 것 1 ls 명령어 : 현재 또는 이하 경로 내에 있는 파일이나 디렉토리 등에 대한 내용을 반환 해준다. ls -a, ls -al, ls -Rla..

[C언어] 백준 2606 바이러스 [내부링크]

문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수..

[C언어] 백준 2178 미로 탐색 [내부링크]

문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력..

[C언어] 백준 1059 좋은 구간 [내부링크]

문제 정수 집합 S가 주어졌을때, 다음 조건을 만족하는 구간 [A, B]를 좋은 구간이라고 한다. A와 B는 양의 정수이고, A < B를 만족한다. A ≤ x ≤ B를 만족하는 모든 정수 x가 집합 S에 속하지 않는다. 집합 S와 n이 주어졌을 때, n을 포함하는 좋은 구간의 개수를 구해보자. 입력 첫째 줄에 집합 S의 크기 L이 주어진다. 둘째 줄에는 집합에 포함된 정수가 주어진다. 셋째 줄에는 n이 주어진다. 출력 첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다. 제한 1 ≤ L ≤ 50 집합 S에는 중복되는 정수가 없다. 집합 S에 포함된 모든 정수는 1보다 크거나 같고, 1,000보다 작거나 같다. 1 ≤ n ≤ (집합 S에서 가장 큰 정수) https://www.acmicpc.net/pro..

[C언어] 백준 1012 유기농 배추 [내부링크]

문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 되므로 서로 인접해있는 배추들이 몇 군..

[C언어] 백준 1439 뒤집기 [내부링크]

문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오. 입력 첫째 줄에 문자열 ..

[C언어] 백준 2563 색종이 [내부링크]

문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 입력 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래..

[C언어] 백준 1260 DFS와 BFS [내부링크]

문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다. ..

[C언어] 백준 10854 큐 [내부링크]

문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 ..

[C언어] 백준 1003 피보나치 함수 [내부링크]

문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacci(0)은 ..

[C언어] 백준 1966 프린터 큐 [내부링크]

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다. 예를 들어 Queue에 4개의 문서(A B C D)가 있고, 중요도가 2 ..

[42 seoul] get_next_line 맛있는 gnl 푸는법 [내부링크]

1서클 과제중 두번 째로 어려운 get_next_line 두번 째로 어려운 이유는 메모리 누수 잡기가 가장 어렵기 때문이다. MANDATORY char*get_next_line(int fd) { static char*backup; char*line; char*buf; if (BUFFER_SIZE

[42 seoul] ft_printf를 밥먹듯이 만드는 법 [내부링크]

참고로 보너스를 안해서 보너스는 다른 블로그를 참고하길 바란다. ft_printf 과제는 말 그대로 printf를 구현하는 과제이다. 우리가 자주 사용했던 %c, %s, %d, %p 등을 구현하는 것이다. 어려울 거라 생각하는 분들이 많은데 사실 1서클 과제중 가장 쉬운 편이고 블랙홀 일수도 가장 많이 준다. 하지만 보너스를 겸한다면 난이도는 1서클 과제중 가장 어려운 편이 된다. 보너스를 할거면 각오하고 하는게 좋을 것이다. 가변 인자 변수 및 함수 헤더파일 #include 가변 인자와 arg함수를 사용하기 위해서는 stdarg 헤더파일을 포함해야 한다. va_listap 가변 변수 ap(argument pointer)를 메인문에서 선언하고 시작해야 한다. va_list : 가변 인자 목록, 가변 인자..

[42 seoul] libft를 숨 쉬듯이 만드는 법 (2) [내부링크]

PART 2 (pdf 기준) PART 2부터 예외처리를 꼼꼼하게 하지 않으면 반드시 틀린다. 바로 아래문제인 substr의 시작위치가 잘못됐거나 시작위치 + len도 잘못 되지 않았는지 s문자열이 NULL이 아닌지 len이 지나치게 근건 아닌지 모두 파악해야 한다. (char) *substr(char const *s, unsigned int start, size_t len) s문자열에서 start인덱스 부터 시작해 len번 복사한 하위 문자열 반환 (char) *strjoin(char const *s1, char const *s2) s1문자열 뒤에 s2문자열 복사한 문자열 반환 자주쓰니 신경써서 만들것 (char) *strtrim(char const *s1, char const *set) s1뮨자열 좌우..

[42 seoul] libft를 숨 쉬듯이 만드는 법 (1) [내부링크]

42 서울 본과정 에서의 첫 과제는 libft이다. 단순히 자주 사용하는 함수들을 묶어서 한번에 만드는 과제라고 생각하면 된다. 처음 만들때는 상당히 힘들지만 만들고 나면 쉬운 과제이고 어렵게 생각하지 않아도 구글링 했을 때 자료들을 가장 쉽게 찾을 수 있는 과제 Makefile 라피신 C 11의 ex05번에서 한번씩 맛보았던 makefile인데 주의 할 점은 컴파일 명령어가 gcc가 아닌 cc이다. 과제가 조금씩 바뀌면서 gcc에서 cc로 바뀌었는데 gcc는 c뿐만 아니라 자바나 c++에서도 사용 가능한 컴파일 명령어 이지만 CC(C Compiler)는 말 그대로 C언어를 기계어로 바꿔주는 컴파일러를 의미한다. 프로그램 명과 헤더 및 소스 파일들은 각자 생각해 보고 자기 방식대로 만들면 된다. 문제는 ..