기존에 로컬에서 작업하던 레포지토리를 개인 GitHub에 올리려고 하니 문제가 발생했습니다.공부 용도로 막 개발하던 레포이다 보니, 커밋 히스토리도 지저분하고 모든 커밋 계정이 회사 계정으로 설정되어 있었습니다.앞으로 해당 레포를 계속 발전시키고 유지보수하기 위해 개인 GitHub 계정에서 관리하기로 결정했습니다.이를 위해 다음 작업을 진행했습니다.로컬 PC에 GitHub 계정 추가기존 레포지토리의 커밋 계정을 개인 계정으로 일괄 변경개인 GitHub에 레포지토리 업로드 로컬 PC에 GitHub 계정 추가 설정1. 계정별 SSH 키 생성터미널에서 계정마다 SSH 키를 생성합니다.# 개인 계정용 SSH 키 생성 (이메일: personal@example.com)ssh-keygen -t ed25519 -C "..
문제 링크 : https://leetcode.com/problems/maximize-area-of-square-hole-in-grid/description/?envType=daily-question&envId=2026-01-15문제 설명입력으로 n, m, hBars, vBars 가 주어진다.n, m 은 각각 제시된 직사각형이 가질 수 있는 최대 수평선의 개수와 최대 수직선의 개수이다. hBars , vBars 는 각각 제거할 수 있는 수평선의 개수와 수직선의 개수이다. n,m 으로 구성된 최대 직사각형에서 hBars, vBars 중 일부를 제거 (제거하지 않아도 됨) 하여 만들수 있는 최대 정사각형의 면적을 구하는 문제다. 설명은 어려워도 예시를 보면 이해가 간다. Example 1:Input: n ..
https://school.programmers.co.kr/learn/courses/30/lessons/388353 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약 물류창고에는 알파벳으로 구분된 컨테이너들이 격자 형태로 놓여 있다.컨테이너 제거 요청이 순서대로 들어오며, 요청 방식에 따라 제거 규칙이 다르다.요청이 A 처럼 알파벳 하나로 들어오면 지게차를 사용한다.이 경우, 요청이 들어온 시점에 해당 알파벳 컨테이너가 창고 외부와 맞닿아 있는 경우에만 제거할 수 있다.즉, 컨테이너의 상·하·좌·우 중 하나라도 외부 공간과 연결되어 있어야 제거 대상이 된다.요청이 AA 처럼 같은 알파벳이 두 번 반복되어..
제네릭, 트레이트, 수명Generics - 여러 타입에 대해 공통 코드를 작성하기 위해 사용한다. Struct, Enum, Method 등 어디에나 사용 가능하다.Trait - 다양한 타입 중에 제약조건을 만족하는 타입을 한정하기 위해 사용한다. (Java의 interface 와 같은 개념으로 이해하면 편하다. 물론 차이는 있다.)Lifetime - 참조 Reference 값의 수명 정보를 제공한다.Genericsfn smallest_i32(list: &[i32]) -> &i32 { let mut smallest = &list[0]; for item in list { if item &char { let mut smallest = &list[0]; for item in ..
Control flowifIf 다음에는 bool 타입이 와야 한다.fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); }}//..
Struct 선언 및 이용Struct 란?속성값들을 묶어서 관리한다. JAVA 의 클래스와 유사함.struct User { // 구조체 정의 name: String, email: String, active: bool,}fn main() { let user = User { // 구조체 인스턴스 생성 name: String::from("홍길동"), email: String::from("gildong@email.com"), active: true, }; println!("이용자의 이름은 = {}", user.name); // 인스턴스 값 출력}구조체 인스턴스의 값을 변경하고 싶은 경우 인스턴스 생성시에 mut 를 붙여줘야한다.fn main(..
OwnershipRust 프로그램이 메모리를 어떻게 관리할지 결정하는 규칙들소유권 규칙에 따라 컴파일 시점에 메모리 할당 및 해제가 결정된다.변수의 범위 scope 가 끝나면 메모리 해제 가능fn main() { { let s = "헬로"; } // s 를 호출할 수 없다 => s의 메모리가 해제된다. }Scalar 데이터 타입은 Stack 에서 관리하기 때문에 소유권 개념이 없고,그 외 타입은 Heap 에서 관리하기 때문에 소유권에 따라 메모리 할당 및 해제가 일어난다. 소유권 규칙Rust 에서 모든 값은 소유자가 있다.한 시점에 딱 하나의 소유자만 있을 수 있다.소유자의 범위가 끝나면 값도 제거된다.일반적인 스칼라 타입 데이터는 스택에서 값 자체가 복사 되기 때문에 아래와..
변수 선언 letlet 은 immutable (수정할 수 없는) 변수입니다.let x = 3;x = 7; // 컴파일에러!println!("x의 값은 {x} 입니다.");let mut 은 mutable (수정할 수 있는) 변수 입니다.let mut x = 3;x = 7; println!("x의 값은 {x} 입니다."); // 성공상수 선언 const상수선언 다른 언어처럼 const 로 선언하며, 반드시 타입을 명시해줘야 합니다.const는 컴파일 타임에 결정되는 수정할 수 없는 상수 변수이기 때문에 당연히 const mut 처럼 사용할 수 없습니다.const PI:f32 = 3.141592;fn main() { println1("PI 상수값은 {PI}입니다.");}변수 가리기 shadowing기존..