본문 바로가기

전체 글

(461)
[git] 브랜치 사용하기 브랜치란?? 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다. 또한 이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있습니다. 여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 메인 브랜치에서 자신의 작업 전용 브랜치를 만듭니다. 그리고 각자 작업을 진행한 후, 작업이 끝난 사람은 메인 브랜치에 자신의 브랜치의 변경 사항을 적용합니다. 이렇게 함으로써 다른 사람의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행하고 그 결과를 하나로 모아 나가게 됩니다. 이러한 방..
[git] 기본 명령어 git 이란? 형상 관리 시스템 (Version Control System)의 한 종류입니다. 주로 개발자들이 프로그램과 관련된 파일들을 저장하는 데 사용합니다. 게임의 세이브 포인트와 유사한데, 언제든지 저장 시점으로 되돌아 갈 수 있습니다. 여기서느 세 가지 기본 개념만 배우려 합니다. 새로운 git 저장소 생성 (init) 폴더 초기화 및 git 저장소 생성 git init 저장소 받아오기, 복제 (clone) 기존에 있는 원격 저장소를 복제하는 것 git clone [github 주소] 스테이지에 올린다. (add) 커밋하기 전에 저장을 원하는 파일들을 묶는 일을 해야 합니다. 이 작업을 스테이지에 파일을 올린다고 합니다. 혹은 줄여서 간단히 'add'라고도 합니다. - 변경 사항 모두 스테이지에..
상속 자바에서 상속을 정의할 때 extends라는 키워드를 사용한다. extend는 확장하다라는 의미로 부모에게 물려받는 것 외에 추가로 확장할 수 있다라고 이해하면 된다. class 자식클래스 extends 부모클래스{ ... } 상속의 특징 단일 상속만 가능 - 자식 클래스는 하나의 부모 클래스에서만 상속 받을 수 있다. 자식 클래스를 객체로 생성할 때 , 부모 클래스가 먼저 객체화 된다. 모든 클래스는 Object 클래스로 부터 시작하는 상속관계 하위 객체이다. (모든 클래스의 가장 상위 클래스는 Object 클래스이다.) 상속 예제 Phone.java public class Phone { String name; String color; String company; void call() { System...
[JAVA] 백준 16940번: BFS 스페셜 저지 진행중 import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class baekjoon16940 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); ArrayList[] info = new ArrayList[n + 1]; boolean[] visit = new boolean[n + 1]; int[] order = new int[n + 1]; int[] parent = new int[n..
[JAVA] 백준 16947번: 서울 지하철 2호선 요구사항 역과 순환선 사이의 거리를 공백으로 구분해 출력한다. 문제 해설 최소거리를 확인하는 문제가 아니기 때문에 dfs를 이용하였다. 기존 dfs 문제와 다른점이라고 한다면, 사이클 (순환선) 에 포함되는 역을 찾아야 한다는 것이다. 아래와 같은 로직을 이용하여 문제를 풀어보았다. 1. 지나는 역을 모두 스택에 넣는다. 2. 이미 방문한 역이 면서 거리차이가 2이상일 경우, 해당역은 사이클의 시작지점이자 종결지점이다. 3. 사이클의 시작지점이 나타날 때까지 스택에서 값을 하나씩 빼고, 뺀 값은 사이클의 포함되는 것을 표시해주었다. (isCycle) 4. 마지막으로 사이클의 포함되는 지역은 0을 print 해주고 cycle에 포함되지 않는 값인 경우에는 가장 가까운 cycle과의 거리를 print해주었다..
[JAVA] 백준 16929번: Two Dots 요구사항 게임판의 상태가 주어졌을 때, 사이클이 존재하는지 아닌지 확인하라. 문제 해설 최소거리를 확인하는 문제가 아니기 때문에 dfs를 이용하였다. 기존의 dfs 문제와 다른점이 있었다면, 사이클 성립을 확인하기 위해 방문한 곳을 확인하는 로직이 필요하다는 것이었다. 사이클이 성립하려면 최소 4개의 점을 방문하여야 한다는 점을 이용하여 해결하였다. 1. 점을 하나씩 이동할 때마다 dist ary 해당 좌표의 값을 1씩 늘렸다. 2. 해당 점에서 상, 하, 좌, 우의 존재하는 점이 방문한 좌표이고 dist값의 차이가 4 이상이면 cycle이 성립한다고 볼 수 있다. import java.util.Arrays; import java.util.Scanner; public class baekjoon16929 ..
[JAVA] 백준 7562번: 나이트의 이동 7576번 토마토 문제와 동일한 유형의 문제다. BFS를 이용하여 문제를 풀었으며 나이트의 위치와 타겟의 위치가 동일한 경우를 제외 한다면, 토마토 문제와 똑같은 방식으로 해결할 수 있는 문제이다. import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class baekjoon7562 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int cycle = sc.nextInt(); int[] aryH = { +2, +2, +1, +1, -1, -1, -2, -2 }; in..
[JAVA] 백준 7576번: 토마토 요구사항 토마토가 모두 익는데 걸리는 최소 날짜를 출력하라 제한사항 익은 토마토에서 상, 하, 좌, 우에 위치한 안 익은 토마토는 다음날 익음 토마토가 모두 익지 못하는 상황이면 -1을 출력 처음부터 모두 익은 상태이면 0을 출력 문제 해설 최소 날짜를 구하는 문제로 BFS를 이용하여야 한다. DFS로 풀 경우에는 최소 날짜를 구할 수 없다. 방문한 경로를 재 방문하는 형태로 문제를 풀 경우에는 DFS가 아닌 브루트포스를 이용한 문제 풀이이다. 브루트포스를 이용할 경우에는 시간 초과 에러가 발생한다. dist[][] = 익는 날짜를 입력 visitInfo[][] = 해당 좌표에 위치한 토마토가 큐에 들어갈 수 있다면 true, 큐에 들어갈 수 없다면 false (중복하여 들어가는 것을 방지) aryH[]..