github-flow 전략 연습하기
·
DevOps/Git, Github
혼자서 github-flow 연습 프로젝트 매니저 1. Github 접속 2. Repository 생성 후 README.md 파일 추가 3. Settings : Branches : Branch protection rules : Require a pull request before merging 체크, Require approvals 체크 후 저장 4. Settings : Collaborator -> add people 5. Issue 생성 -> Title & Content 작성 -> Label 및 asignees 설정 -> Submit 개발자 1. git bash terminal 접속 후 git clone "레파지토리 주소" 2. git checkout -b "Label명/이슈번호" 로 브랜치 생성 3...
[BOJ] 14502번: 연구소
·
Problem Solving/Baekjoon
출처 : https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 1. 문제 설명 상,하,좌,우로 확산되는 바이러스를 막기 위해 3개의 벽을 활용해서 안전 영역의 최대 크기를 구하는 문제이다. 2. 접근 방식 백트래킹 + BFS로 풀었다. 생각보다 쉬웠던 문제였던 것 같다. 코드길이는 좀 길긴하지만 크게 막힘이 없었다. 3. 주석 달기 (변수 설명, 각 줄마다 문장으로 설명, 함수 설명) import java.io.BufferedReader; import java...
[BOJ] 14926번: Not Equal
·
Problem Solving/Baekjoon
출처 : https://www.acmicpc.net/problem/14926 14926번: Not Equal 주어진 N개의 수가 모두 서로 다르다는 것은 기호 "!="를 통해 하나의 식으로 표현할 수 있다. 예를 들어 A, B, C가 모두 서로 다르다는 것은 논리식으로 (A != B) && (B != C) && (C != A) 로 쓸 수 있고, 이 www.acmicpc.net 1. 문제 설명 주어진 N개의 수가 모두 서로 다르다는 것은 기호 "!="를 통해 하나의 식으로 표현할 수 있다. 예를 들어 A, B, C가 모두 서로 다르다는 것은 논리식으로 (A != B) && (B != C) && (C != A) 로 쓸 수 있고, 이를 다음과 같이 한 줄로 표현하는 것을 A, B, C에 대한 "한 줄 표기법"..
[BOJ] 1753번: 최단경로
·
Problem Solving/Baekjoon
출처 : https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 1. 문제 설명 최단 경로를 구하는 문제이다. 2. 접근 방식 다익스트라 알고리즘을 사용하면 쉽게 풀 수 있다 !! (기본적인 문제) 3. 주석 달기 (변수 설명, 각 줄마다 문장으로 설명, 함수 설명) import java.util.*; public class Main { static class Edge { // from 에서 to 정점까지의 가중치..
[BOJ] 1326번: 폴짝폴짝
·
Problem Solving/Baekjoon
출처 : https://www.acmicpc.net/problem/1326 1326번: 폴짝폴짝 첫째 줄에 징검다리의 개수 N(1≤N≤10,000)이 주어지고, 이어서 각 징검다리에 쓰여 있는 N개의 정수가 주어진다. 그 다음 줄에는 N보다 작거나 같은 자연수 a, b가 주어지는 데, 이는 개구리가 a번 www.acmicpc.net 1. 문제 설명 개구리는 일렬로 놓여 있는 징검다리를 건넌다. 각 징검다리에는 숫자가 쓰여 있고 쓰여진 수의 배수만큼 떨어져 있는 곳으로만 이동할 수 있다. 2. 접근 방식 양수 배수 방향으로만 가는 조건을 고려해서 시간을 많이 썼다. 징검다리에는 양수의 배수 방향과 음수의 배수 방향 둘 다 올 수 있다는 점을 고려해야 한다. DFS가 아닌 BFS를 활용하는 이유는 q에 이동..
merge와 rebase
·
DevOps/Git, Github
Rebase 하기 Git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 두 가지가 존재한다. 하나는 Merge이고, 다른 하나는 Rebase이다. 두 방법의 차이점을 살펴본다. Merge Rebase 그림을 보면 어떤 점이 다른 것 같은가? Merge의 경우, 기존의 커밋 히스토리는 남겨두고 merge하고자 하는 브랜치를 기준으로 새로운 커밋이 생긴다. 하지만 Rebase는 기존의 커밋은 사라지고 rebase하고자 하는 브랜치를 기준으로 커밋을 재정렬한다. 개인적으로 두 방법 중에 Merge가 좋은 것 같다. Rebase를 사용하면 커밋이 재정렬되어 깔끔해보이긴 하겠지만 큰 프로젝트에서 전체적인 프로세스 과정을 이해하거나 히스토리를 살펴볼 때는 Merge를 사용하면 이전 기록이 모두 남아있어서 더 좋지 ..
String과 Character 그리고 equals()함수 (+ generic)
·
Backend/Java
제네릭(Generic) 절묘하게 맞춰진 미완성 그림이다. 제네릭을 활용하면 박싱/언박싱 등을 고려하지 않고, 그래도 갖다쓸 수 있다. 타입에 따라 클래스를 여러 번 만들거나 반복적인 수동 형변환을 해주지 않아도 되서 편리한 듯 하다. 자바는 배우면 배울수록 매력있는 언어인 듯 하다. (자바똥) public class Main { public static void main(String[] args) { 제너릭저장소 a저장소 = new 제너릭저장소(); a저장소.setData(500); System.out.println(a저장소.getData()); } } class 제너릭저장소{ private Object data; public T getData() { return (T)this.data; } public..
GIT - 브랜치 병합하기(merge)
·
DevOps/Git, Github
1. 빈폴더 생성 git init main : c0 c1 bugFix 브랜치 생성, c2 main : c3, git merge bugFix main : c4 2. git init touch 0 && git add . && git commit -m "C0" git checkout -b bugFix echo '안녕' > 1 && git add . && git commit -m "C1" git log --oneline --graph --all 1 파일의 내용의 안녕 으로 설정 후 커밋 git checkout main echo '잘가' > 1 && git add . && git commit -m "C2" git log --oneline --graph --all 1 파일의 내용의 잘가 으로 설정 후 커밋 git ..
인터페이스와 예외처리
·
Backend/Java
인터페이스(Interface) 추상 메서드와 상수만을 포함하고 있으며, 다중 상속을 지원하기 위함 (단, 모든 추상 메서드를 구현하지 않는다면 추상클래스로 선언할 것!!!) 접근제어자 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수...) { } } 장점 1. 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화 가능 2. 클래스의 작성과 인터페이스의 구현을 동시에 진행 가능, 개발 시간 단축 3. 클래스와 클래스간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍 가능 package Java.JavaInterface; interface Animal { public abstract void..
다형성과 super(), instanceof()
·
Backend/Java
다형성(Polymorphism) 클래스는 상속을 통해 확장될 수 있어도 축소될수는 없으므로, 자식 클래스에서 사용할 수 있는 멤버의 개수가 언제나 부모 클래스와 같거나 많게 된다. 참조 변수의 타입 변환 1. 서로 상속관계에 있는 클래스 사이에서만 타입 변환 가능 2. 자식 -> 부모 클래스 타입으로의 타입 변환은 생략 가능 3. 부모 -> 자식 클래스 타입으로의 타입 변환은 반드시 타입 변환 명시해야 함 Child child = (Child)new Parent(); Super() this() 메서드가 같은 클래스의 다른 생성자를 호출할 때 사용된다면 super() 메서드는 부모 클래스의 생성자를 호출할 때 사용된다. child 클래스에 지역 변수로 a가 선언되지 않으면 10, 10, 10 이 출력된다...
알아두면 좋은 Windows 단축키
·
etc
F2 : 파일 이름 바꾸기 win : 창 분할 win + D : 바탕화면 보기 win + I : 컴퓨터 설정 win + shift + s : 캡처 추가되는대로 수정할 예정 :)
클래스와 상속
·
Backend/Java
클래스(Class) 클래스를 만듦으로서 할 수 있는 3가지 1. 리모콘을 저장할 수 있는 변수를 만들 수 있다. 2. 리모콘을 만들 수 있다. 3. 객체를 만들 수 있다. 클래스의 2가지 용도 1. 객체 만들기 2. 객체를 조종할 수 있는 리모콘 만들기 클래스 내부의 메서드(함수)의 2가지 용도 1. 객체를 만들 때 : 실제 기능 2. 리모콘을 만들 때 : 리모콘 버튼 public class Main { public static void main(String[] args) { Car A = new Car(); Car B = new Car(); Car C = new Car(); A.no = 1; A.speed = 10; B.no = 2; B.speed = 20; C.no = 3; C.speed = 30; ..