프로그래밍 공부

프로그래밍 공부/Git

[GIT] Repository 합치기

합치고 싶은 repo1, repo2가 생겼다고 가정해보자. repo1는 유지하고 싶고, repo2의 파일을 repo1에 옮기고 싶다. 우선 bash를 repo1에서 띄우고 아래 코드를 작성한다. git subtree add --prefix=repo2 https://~~repo2.git main git subtree add --prefix= 까지는 작성이 같다. prefix 내용에 합쳤을 때의 폴더 구조를 작성하는 것 repo2를 적어 넣으면 'repo2/[repo2 repository의 파일들]'의 구조가 된다. 그 다음에 https://~.git은 합치고 싶었던 repo2의 주소를 붙여 넣으면 된다. 그 리포지토리 들어가보면 ' code - HTTPS' 쪽에 복사 버튼이 있다. 뭐 근데 주소 복사해서 ..

프로그래밍 공부/Git

[GIT] pull request - merge 전 수정하기

바로 본론으로 들어가자면 풀리퀘를 해놓고 수정이 필요했다거나, 그런 부분이 존재한다면 그 부분을 수정한다. 수정한 코드가 하나면 'git add {수정하고싶은 파일}' 을 하면 되긴 하는데 그냥 아래 코드로 진행해도 된다. git add . git commit --amend git push -f origin {pull request 보낸 branch-name} 설명하자면 add, commit, push의 경우 원래 push할 때 진행하던 과정인데, git commit --amend의 경우 제일 최근에 커밋했던 내용을 수정하는 방법이다. 새로 커밋을 하는게 아니라 원래 있던 커밋 내용에 add 했던 파일들을 넣어서 pull requset를 진행하는 방법인 것 그리고 병합 요청한 branch를 push하면 ..

프로그래밍 공부/Git

[GIT] .gitignore 수정 후 적용

Git에 Push할 때 올라가면 안되는 파일이 있으면 .gitignore 파일을 이용해서 올리지 않게 설정할 수 있다. 기본적으로 프로젝트를 생성할 때 생성해주는 파일이며, 아래 웹에서도 Push하고 싶지 않은 파일들을 설정해서 생성할 수 있다. gitignore.io Create useful .gitignore files for your project www.toptal.com 근데 사용법이나 이런 게 문제가 아니라, 초기에 Push를 한 파일 중 .gitignore를 적용시키고 싶으면 어떻게 할까? 지금부터 설명하는 방법은 터미널에서 사용할 수 있는 방법이다.(사실 가끔 사용하는 데 자주 까먹어서 ㅎ 정리) git rm -r --cached . git add . git commit -m "Apply ..

프로그래밍 공부/Python

[Python] defaultdict()

여느 때와 다름없이 알고리즘 문제를 풀고 있었다. (문제는 [프로그래머스 - 여행경로] 참고) 문제 초반부에서 만약 경로가 [a, b], [b, c], [c, a] 처럼 주어졌다고 하면, a -> b라는 경로들의 방향을 담고 싶다. 하지만 a가 str형이라 인덱스(정수 고정) - 값처럼 사용할 수 없어 리스트를 못 사용했다. 그래서 키(문자 가능) - 값(문자 가능)처럼 dictionary를 사용해서 문제를 풀었다. 나는 아래 코드처럼 사용했다. tickets = [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] t_dict = dict() for i in range(len(tickets)): if tickets..

프로그래밍 공부/Python

[Python] sys.setrecursionlimit()

평소에 알고리즘 풀 때, BFS로만 풀어서 DFS로도 좀 풀어볼까 하다가 예제는 맞는데 자꾸 런타임 에러로 틀려서 검색하면서 찾아보다가 '# dfs 반복 횟수 제한 해제' 라고 주석처리 되어있는게 있길래 한번 넣어봤더니 통과했다. 찾아보니까 파이썬에서는 재귀를 사용할 때 최대 깊이가 기본 1,000회로 설정되어 있다고 한다. 그래서 아래 코드를 사용하면 이 설정이 늘어나게 되는 것. import sys sys.setrecursionlimit(10 ** 9) 이런 식으로 코드를 작성하면 최대 깊이가 10**9로 바뀌게 된다. input은 sys.stdin.readline bfs는 from collections import deque dfs는 sys.setrecursionlimit(10 ** 9) 이런 수준..

프로그래밍 공부/Java

[JAVA] super 키워드

super super는 부모 클래스로부터 상속받은 필드나 메서드를 자식 클래스에서 참조하는데 사용하는 변수다. 조금 정리해서 말하자면 자신이 상속받은 부모를 가리키는 참조 변수인 것 this의 경우 필드, 매개변수명이 동일해서 구분하기 위해 사용했다. super는 부모 클래스의 멤버와 자식 클래스의 멤버 명이 같을 경우 사용하여 구별할 수 있다. 이런 식으로 super 참조 변수는 부모 클래스의 멤버에 접근할 수 있게 된다. 아래 예제를 주석과 함께 살펴보자 class Parent { int a = 10; } // Parent 클래스에서 a = 10 선언 class Child extends Parent { // Child 클래스에서 Parent 클래스 상속 -> a = 10을 가져옴 int a = 20;..

프로그래밍 공부/Java

[JAVA] this 키워드

this와 this() 자바에서 this는 객체 자기 자신(참조값)을 가리키는 레퍼런스 변수이며, 자신의 객체에 접근하기 위해 사용한다. 주로 필드와 매개변수 명이 동일할 때, 명확한 구분을 위해 사용한다. this() 같은 경우는 같은 클래스 내 생성자가 다른 생성자를 호출할 때 사용한다. 생성자는 매개변수를 다양하게 받아올 수 있는데(오버로딩), this()를 이용하면 중복 코드를 간단하게 할 수 있다. 주의할 점으론 생성자에서만 사용이 가능하며, 반드시 호출하는 곳의 첫 번째 문장에 작성해야 한다. 아래의 Member 클래스 예제를 살펴보자 public class Member { private int id; private String username; private int age; public Me..

프로그래밍 공부/Java

[JAVA] static과 final

앞서 final 키워드에 대한 포스팅을 올렸는데, static과 같이 사용하면 내용이 길어져서 따로 정리하려고 한다. 우선 static의 경우 객체 생성 없이 사용할 수 있는 필드, 메서드를 생성하고자 할 때 사용된다. static으로 선언될 경우 GC가 관여하지 않는 static 메모리 영역에 적재되어 모든 객체가 공유한다. 물론 너무 남발하면 메모리 할당된 채로 남아있어 좋지는 않다. 특징을 간단하게 요약하자면 아래와 같다. 프로그램이 시작할 때 단 한 번만 생성되고 초기화된다. 인스턴스를 생성하지 않고 바로 사용 가능 해당 클래스의 모든 인스턴스 공유 static과 final 일단 제일 큰 특징은 static과 final를 이용하여 상수 정의에 사용한다. public static final doub..

티키택
'프로그래밍 공부' 카테고리의 글 목록