본문 바로가기

분류 전체보기

(59)
[Hive Helsinki / Piscine] C07 C07의 경우 malloc, 즉 메모리 할당과 관련된 내용으로 이루어진다. 메모리 할당은 주로 배열을 사용하고 싶지만, 배열을 선언하는 시점에 배열의 크기가 확정되어 있지 않을 때 사용한다. 관련된 자세한 내용은 아래 글을 참조하시기 바란다. 나는 C언어 공부할 때 해당 교안을 위주로 공부했는데, 잘 정리되어 있어서 완독하고 나면 피신에 나오는 문제들의 난이도가 크게 어렵지 않게 느껴진다.https://modoocode.com/98" data-og-description="모두의 코드 씹어먹는 C 언어 - 작성일 : 2010-08-03 이 글은 94347 번 읽혔습니다. 안녕하세요. 여러분. 정말 멀리 달려 온 것 같네요. 벌써 제 20 " data-og-host="modoocode.com" data-o..
[Java] 스트림(Stream) 요소 처리 자바 공부 중 Stream에 대한 내용이 복잡하다고 느껴, 정리한 것에 대한 기록이다. 아래 책을 공부 중이다.신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121.    Stream(스트림) 이란?  Stream(스트림)은 for문이나 Iterator 외에 컬렉션 및 배열의 요소를 반복 처리 하기 위한 또 다른 방법 중 하나이다. Stream과 Iterator는 유사하지만 아래와 같은 차이를 가진다.1. 외부 반복자인 Iterator 및 for문과 달리 '내부 반복자'로 처리 속도가 빠르고 병렬 처리에 효율적이다.2. 람다식으로 다양한 요소 처리를 정의할 수 있다.3. 중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성할 수 있다.   차이점들을 하나씩 보자. 우선 내부 반복..
[Hive Helsinki / Piscine] C06 C06의 경우 대체로 터미널로부터 입력을 받는 '프로그램'을 작성할 것을 요구한다. 따라서 이전에 요구된 프로토타입의 함수만을 포함했던 것과는 달리, 이 과제에서는 바로 실행 가능한 main 함수를 포함해야 한다. 우선 기본적으로 터미널로부터 입력받는 방법을 알아야 하는데, 이는 main 함수의 인자를 이용한다. int main(int argc, char **argv) 위와 같은 방식으로 사용되는데, int 타입의 argc는 입력받은 parameter의 개수이고, argv는 입력받은 parameter를 문자열로 저장한 것의 배열이다. argv가 two pointer인 이유는 문자열 자체가 이미 문자의 배열인데, argv는 문자열의 배열이 되어야 하기 때문이다. 만약 터미널에 아래와 같이 입력한다고 해보자..
[Java] Wrapper Class (래퍼 클래스, 포장 클래스) 자바 공부 중 Wrapper Class에 대한 내용이 헷갈려 정리한 것에 대한 기록이다. 아래 책을 공부 중이다. 신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121. 참고한 블로그 글들이다. https://medium.com/@s23051/%EB%9E%98%ED%8D%BC-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%9E%80-wrapper-class-cc5aa6f7cdd1 래퍼 클래스란(Wrapper Class)? 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class… medium.c..
[Hive Helsinki / Piscine] Rush01 Rush01은 주어진 조건에 따라 1, 2, 3, 4의 높이를 가진 막대를 알맞게 배치하는 문제이다. 문제를 이해하는 데까지도 좀 어렵다고 느꼈고, 풀이하는 데는 더욱 오래 걸렸다. 결국 마지막에 사소한 실수와 malloc check를 하지 않은 문제들로 인해서 fail을 받았지만, 결국 출력을 할 수 있게 만드는 데에는 성공했다. 여기서 적는 방법은 피신 이후 내가 오류나 효율성을 고려해서 코드를 수정한 내용이다. 따라서 피신에서의 형식이나 규칙에 어긋나는 부분(금지 함수를 쓰는 등의 제한을 어긴 것은 아니지만, 띄어쓰기나 인자, row 수 제한 등의 규칙은 신경 쓰지 않았다)이 있을 수 있고, 따라서 문제의 접근 방식만 참고하는 편이 좋을 것 같다. 예시 input으로 문제에 대한 설명부터 해보겠다...
[JAVA] StringBuilder로 문자열 조작하기 StringBuilder는 자바에서 사용 가능한 문자열과 관련된 주요 클래스 중 하나이다. 이 클래스는 효율적인 문자열 조작 기능이 필요할 때 사용하게 된다. 그렇다면 왜 자바에서는 특별히 효율적인 문자열 조작을 위해 StringBuilder를 사용할까? StringBuilder의 필요성을 파악하기 위해서는 우선 자바에서 문자열을 처리하는 방식을 알아야 한다. 아래 코드를 예로 보자. String str = "abc"; str += "de"; 위와 같이 str에 "abc"를 저장했다가 "de"를 덧붙이면 우리의 일반적인 생각 혹은 C를 공부해 보신 분이라면 C에서는 아래 표와 같이 "abc"가 있던 메모리 공간 뒤에 "de"를 저장하여, 하나의 문자열로 처리하는 것을 떠올릴 것이다. 변경 전 str 'a..
[Hive Helsinki / 42cursus] restrict pointer와 size_t type 42 cursus에 접어들고, 첫 번째 과제인 Libft을 수행하면서 memcpy 함수를 구현하던 중 restrict pointer와 size_t type을 처음 접하게 되었다. size_t type은 이전에도 strlen 등의 매뉴얼 등을 확인하며 본 경험이 있으나 사용해 본 적은 없고, restrict pointer는 처음 보아서 좀 더 기록해보려 한다. restrict pointer restrict 키워드는 메모리 접근을 최적화하기 위해서 사용된다. restrict 키워드가 쓰였다면 각 변수가 같은 메모리 공간이 아니라는 것을 컴파일러에게 알려주려는 것이다. 나도 이런 설명만 봐서는 대체 무슨 말인지 이해가 되지 않았다. 그래서 내가 본 memcpy 함수의 프로토타입과 함께 이야기 하려 한다. 아래..
[백준 10845/C언어] 큐 풀이 백준 10845번 문제를 풀어보았습니다. 백준 10845번: https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 내용은 다음과 같습니다. 큐(Queue)는 대표적인 자료구조 중 하나입니다. 보통 스택(Stack)과 함께 이야기되는데, 큐는 FIFO(Frist In First Out, 선입선출)이고 스택은 LIFO(Last In First Out, 후입선출)를 구현한 대표적인 자료구조에 해당합니다. C언어에서 큐를 구현할 때는 ..

728x90