Rust로 만드는 숫자 추리 게임
·
Programming Language/RUST
📍 추리 게임RUST로 고전적인 입문자용 프로그래밍 문제인 추리 게임을 구현해보자.프로젝트 설명이 프로그램은 1~100 사이의 임의의 정수를 생성함다음으로 플레이어가 프로그램에 추리한 정수를 입력함프로그램은 입력받은 추리값이 정답보다 높거나 낮은지를 알려줌추리값이 정답이라면 축하 메세지를 보여주고 종료함 🆕 새로운 프로젝트 생성하기첫 명령어의 --bin 플래그는 바이너리용 프로젝트를 생성하는 플래그이다.cargo new guessing_game --bincd guessing_gamecode .  📝 코드 작성하기숫자 입력 받기use std::io;fn main() { println!("Guess the number!"); println!("Please input your guess.");..
Hello, Cargo! (with VS Code)
·
Programming Language/RUST
1. Cargo란?Cargo(카고)는 러스트의 빌드 시스템 및 패키지 매니저이다.대부분 러스트 사용자들은 Cargo를 이용하여 러스트 프로젝트를 관리한다고 한다.→ 탁월한 의존성 관리를 제공함!💡 Rust 설치를 rustup을 통해 했다면, Cargo도 함께 설치됨  2. Cargo를 사용해 프로젝트 생성하기Rust 프로그램을 만들기 위해 `cargo new` 명령을 사용해 새 프로젝트를 생성할 수 있다.cmd에서 다음을 실행해 새 프로젝트를 생성한다.cargo new hello_world 해당 프로젝트 디렉터리로 이동 후에 VS Code를 실행하면 자동으로 폴더가 선택된다.cd hello_worldcode . 자동으로 생성된 프로젝트의 파일 구조는 다음과 같다.Cargo.toml - 프로젝트의 설정과..
[C언어] Pcap을 이용한 TCP 프로토콜 정보 출력 프로그램
·
Programming Language/PYTHON
📝 과제 내용 🧩 코드 구성 설명 구조체 struct Ethernet : 2계층 이더넷 패킷의 헤더 구조체 strcut IP : 3계층 IP 패킷의 헤더 구조체 struct TCP : 4계층 TCP 패킷의 헤더 구조체 struct TCP_Payload : TCP 페이로드를 저장할 구조체 함수 void usage() : 사용법에 대해 출력해주는 함수 bool parse() : 인수의 개수가 올바르게 받아지면 True를 반환하는 함수 int main() : 인수의 개수 검사 아무 패킷이 캡쳐되지 않았을 때 오류 메시지 출력 패킷을 캡쳐하고, TCP 패킷인지 확인하고 정보 출력 🖥️ 코드 & 설명 #include #include #include #include #include // 2계층 이더넷 구조체 선언 ..
[C언어] NBO - HBO 빅 엔디언을 리틀 엔디언으로 바꾸기
·
Programming Language/C
📝 과제 내용 🧩 코드 구성 설명 BigtoLittle() : 빅 엔디언에서 리틀 엔디언으로 변환하는 함수 main() : 입력 파일과 출력 파일의 이름을 인수로 받는다. 입력 파일을 바이너리로 읽어 FILE 형 변수에 저장한다. 4바이트만 읽어 unint32_t 형 변수에 저장한다. BigtoLittle() 함수를 호출해 변환 해준다. 변환해준 값을 출력 파일에 "쓰기" 해준다. 🖥️ 코드 & 설명 #include #include #include // 빅엔디언에서 리틀엔디언으로 변환하는 함수 int BigtoLittle(uint32_t buf) { uint32_t result; // 비트연산을 이용해 변환 result = (buf >> 24) | ((buf >> 8 ) & 0x0000FF00) | ((..
[C언어] 백준 10810번 : 공 넣기
·
Programming Language/C
✅ 문제 제출 📄 문제 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다. 도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다. 공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오. ⌨️ 입력 첫째 줄에 ..
[C언어] 백준 2562번 : 최댓값
·
Programming Language/C
✅ 문제 제출 📄 문제 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. ⌨️ 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 🖥️ 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다. 🧪 예제 예제 입력 3 29 38 12 57 74 40 85 61 예제 출력 85 8 ✏️ 문제 풀이 #include int main() { int arr[9] = { 0, }; int max =..
[C언어] 동적 할당 : malloc()
·
Programming Language/C
💾 C의 메모리 동적 할당 컴파일 타임 → Data 영역과 Stack 영역에 할당되는 메모리의 크기 결정 런 타임 (프로그램이 실행되는 중) → 힙 영역의 크기 결정 런 타임에 메모리를 할당 받는 것을 메모리의 동적 할당이라고 한다. 동적 메모리 할당은 프로그램 실행 중에 필요한 만큼의 메모리를 할당해주는 것이다. C언어에서 메모리 동적 할당을 해주기 위해 malloc() 함수를 사용할 수 있다. 📌 malloc() 함수 Memory + Allocation 의 단어가 합쳐진 malloc()은 C언어에서 메모리의 동적 할당을 해주는 함수이다. malloc() 함수의 원형은 다음과 같다. #include void *malloc(size_t size); 동적 할당을 하기 위한 함수를 사용하기 전에 #inclu..
[C언어] 백준 10818번 : 최소, 최대
·
Programming Language/C
✅ 문제 제출 📄 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. ⌨️ 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 🖥️ 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 🧪 예제 예제 입력 5 20 10 35 30 7 예제 출력 7 35 ✏️ 문제 풀이 #include #include int main() { int N = 0; int max = 0, min = 0; int* arr; scanf("%d", &N); arr = (int*)malloc(N *..
[C언어] Call By Value & Call By Reference
·
Programming Language/C
Call By Value & Call By Reference 함수로 인자를 전달하는 방식에는 크게 Call by value와 Call by reference 방식이 있다. Call By Value (값에 의한 호출) 함수 호출 시 인자로 전달되는 변수의 값을 함수의 매개변수에 복사하여 전달하는 방식 복사된 인자는 지역 변수의 특성을 가지게 된다. → 매개변수의 값을 변경해도 원래의 변수에는 영향 X ⇒ 원본 값을 바꿀 필요가 없을 때 사용 #include void sub(int a) { a = a - 3; printf("sub 함수의 매개변수 a의 값 : %d\\n", a); } int main() { int a = 10; printf("sub 함수 실행 전 a 값 : %d\\n", a); minus(a..
C 포인터(Pointer)
·
Programming Language/C
👆 포인터란? 변수의 주소값을 가리키는, 저장하는 변수 📣 포인터 변수 선언하기 int *[변수명]; char *[변수명]; int형 변수의 주소를 담고 싶다면 int *을, char형 변수의 주소를 담고 싶다면 char *을 사용한다. 다른 자료형들도 마찬가지이다. 선언할 때에는 아래의 형식 모두 가능하다. int *p int* p int * p 🪄 포인터 연산자 주소 연산자 ( & ) 변수의 이름 앞에 사용하며, 해당 변수의 주소값을 반환함. 참조 연산자 ( * ) 포인터의 이름이나 주소 앞에 사용하며, 포인터가 가리키는 주소에 저장된 값을 반환함. ❗ 포인터 변수를 선언할 때 사용하는 *은 포인터 변수를 선언하기 위한 것으로 참조 연산자의 *은 다른 의미를 가지고 있다. 🛒 포인터 변수의 크기 포인..