본문 바로가기

분류 전체보기

(336)
[git 오류]Another git process seems to be running in this repository, 잘 사용하던 깃이 갑자기 푸쉬가 안될 경우이다. Another git process seems to be running in this repository, e.g. an editor opened by 'git commit'. Please make sure all processes are terminated then try again. If it still fails, a git process may have crashed in this repository earlier: remove the file manually to continue. 일반적으로 두개의 깃 명령어가 실행된 경우이다. 나는 그런 적 없는데 왜...? 어쨌든 Git Bash에 rm -f .git/index.lock 명령어를 실행시키면 해결.
백준 2805번 나무 자르기(C++) #include #include using namespace std; vector tree; int N, M; bool checkTree(int ch) { long long sum = 0; for (auto i : tree) { if (i - ch > 0) sum += i - ch; } if (sum >= M) return true; else return false; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); cin >> N >> M; int max = 0; for (int i = 0; i > tmp; tree.push_back(tmp); if (max < tm..
C/C++ 포인터와 참조 : 화살표 -> 과 점 . 의 차이 C/C++에서 포인터를 쓰다보면 Ver.a()라고 쓰려 하면 IDE가 Ver -> a()로 바꿔주는 경우가 있다. 신경쓰지 않을 수도 있지만 뭐가 다른걸까? 간단히 말하면 -> 는 간접 . 는 직접이라고 볼 수 있다. 아래 코드를 보자 #include using namespace std; class Rect { int width, height; public: Rect(int x, int y) : width(x), height(y) {} int area() { return width * height; } }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); Rect obj(3, 4); Rect* foo, * bar, ..
C++ : In-line function 이란 무엇인가 In-line fucntion이란 마치 C/C++의 매크로처럼 함수를 In-line 라인 안에 숨긴다는 뜻이다. 예를 들어 void add(int a, int b){ return a + b; } main(){ cout add -> 연산 -> 출력 순이다. 만약 inline을 쓰면? inline void add(int a, int b){ return a + b; } main(){ cout 연산 -> 출력 순이된다. 이미 컴파일러는 인라인함수 때문에 저 함수 자체를 알고 있는 상태이기 때문이다. 우리가 어떤 수학 공식을 알면 문제에서 바로 적용 가능하지만 그 공식의 이름만 안다면 책에서 찾아보고 써야하는 것과 같다. inline은 함수를 컴파일러에게 외우게 하는 것이다. 때문에 inline은 함수의 실행시간..
프로그래머스 - 점프와 순간이동 (C++) 처음엔 최소값을 구하는거고 백준에서 비슷한 워딩의 문제를 본 적이 있어서 BFS인 줄 알았다. 이 문제는 0에서 시작해서 걷거나 순간이동 두가지 조건이 있는것으로 보인다. 그러나 처음 몇 걸음을 걸어야할지 알수없다. 한발짝씩 가서 모든 조건을 새어보는 것은 불가능하다. 그러나 목적지 입장에서 생각해보면 이전의 수에서 x2 되었거나 +1 되었거나 둘중 하나이다. x2는 비용이 0이기 때문에 이왕이면 x2 를 많이 사용해야한다. 그러므로 n이 짝수이면 나누기2 홀수이면 빼기 1 하면서 0까지 얼마나 걸리나 계산하면 된다. #include using namespace std; int solution(int n) { int ans = 0; while(true){ if(n % 2 == 0){ n = n / 2; ..
OOP 기초 (왜 쓰는가?, 캡슐화 등) 1. 소프트웨어공학의 궁극적 목표는 최소한의 비용으로 소프트웨어의 개발, 유지보수를 하는 것이다. 2. 일반적으로 OOP는 프로그래머의 생산성, SW퀄리티, 생명주기, 가독성, 이해력을 증가시킨다. 3. 커플링은 모듈(컴포넌트)간의 의존성을 나타낸다. 일반적으로 커플링은 최소화 해야한다. 4. 응집도는 모듈 내부의 데이터들이 얼마나 하나의 목표를 위해 긴밀한가를 나타낸다. 응집도는 최대화 해야한다. 5. 추상 클래스는 최소 한개의 추상메소드를 포함해야한다. 6. 캡슐화란? 7. 캡슐화를 할때의 장점은 무엇인가? 8. 그냥 인스턴스를 사용할때와 포인터를 사용할 때의 차이는? 일반 인스턴스는 값의 복사값을 콜리에게 주기 때문에 데이터가 안전하다. 포인터를 사용할 경우는 본래의 값이 변경 될 수 있다.
백준 7562 나이트의 이동(C++) #include #include #define MAX 301 using namespace std; int dX[] = { 2,-2, 1,-1, 2 , -1 , -2 , 1}; int dY[] = { 1,-1,2,-2, -1 , 2 , 1 , -2}; int dis[MAX][MAX] = { 0 ,}; bool visited[MAX][MAX] = { false, }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int N; int Size; int nightX, nightY; int desX, desY; cin >> N; for (int i = 0; i > Size >>..
백준 1261번 알고스팟(C++) 벽을 부수고 이동한다는게 무슨 말인지 모를 수 있지만 결국 비용이 1인길을 선택하느냐 0인길을 선택하느냐의 차이이다. 우리는 목적지까지 최소한으로 이동해야하기 때문에 최대한 0인부분을 잘 이용해야한다. 그렇기 때문에 이 문제는 0-1 BFS 최소비용 or 다익스트라 문제이다. 처음에는 아래 코드로 했다가 예제에서 틀렸다. #include #include #include #define MAX 1001 using namespace std; int dx[] = { 0,0,1,-1 }; int dy[] = { 1,-1,0,0 }; deque Q; int dis[MAX][MAX]; int wall[MAX][MAX]; bool visited[MAX][MAX] = { false, }; void BFS(int N, i..