반응형

분류 전체보기 135

[ git 입문 1 ]- 깃이란? (깃 개념, 터미널, 터미널에서 커밋하기)

1. git - version control system이다. (버전관리 시스템) - 당신이 어떤 글을 쓰고 있는데 에세이_최종.docs 에세이_찐_최종.docs 에세이_진짜_찐_최종.docs 라고 고쳐가며 글을 계속 수정해나간다고 치자. 일반 사람들은 보통 이렇게 글을 고쳐 나가면서 가장 마지막으로 수정한 제출본만을 사용한다. 하지만 수정 전의 파일이 저렇게 많아지다보면 어떤 걸 수정했었는지도 기억이 안나고, 관리하기가 매우 복잡해진다. 이런 것들을 해결할 수 있는 것이 '버전 관리 시스템'이다. 이런 것 중 하나로, 가장 많은 사람들이 사용하는 버전 관리 시스템이 git이다. 그리고 그 사용량은 전세계적으로 매우 압도적이기 때문에, git을 사용한다고 보면 된다. 깃을 이용하면 매 순간 저장할 때마다..

개발/.git 2022.12.31

[깃 입문 2]- 깃의 사용( git init, add, commit )

2. git의 사용 약간의 복습을 해보겠다. git은 컴퓨터, 기계에 저장만 되어있다면 인터넷 없이도 사용할 수 있다. 흔히 하는 착각이 git이 클라우드 처럼 사용할 수 있는 '저장소'역할이기 때문에, 마구잡이로 자기가 쓴 코드나 글을 올려두는 용도로 사용하고는 한다. 하지만 git은 그 목적이 '버전 관리 시스템'이다. 무려 git은 Linus Tovalds(LINUX 창시자)가 오픈소스(모두가 볼 수 있는, 사용할 수 있는) 버전 관리 시스템을 만들어보겠다고 시작한 이 서비스이다. 이런 서비스를 저장소로만 이용된다면 조금 아쉽지 않겠는가? 심지어 git은 인터넷 없이도 사용할 수 있다. 오로지 내 컴퓨터 안에서 git이라는 프로그램을 이용해 내 파일들의 변화를 관리할 수 있는 것이다! 본론으로 가보..

개발/.git 2022.12.31

백준 1753번: 최단경로 ( 최단경로, 다익스트라)

문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. 출력 ..

백준 16928번 :뱀과 사다리 게임 (그래프 순회 및 탐색)

문제 뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다. 주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까? 게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다. 플레이어는 주사위를 굴려 나온 수만큼 이동해야 한다. 예를 들어, 플레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라면, i+4번 칸으로 이동해야 한다. 만약 주사위를 굴린 결과가 100번 칸을 넘어간다면 이동할 수 없다. 도착한 칸이 사다리면, 사다리를 타고 위로 올라간다. 뱀..

백준 1912- 연속합(다이나믹 프로그래밍)

문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 답을 출력한다. ------------------------------------------------------------------------------..

백준 1697 - 숨바꼭질 (그래프 순회, 탐색 , 최단경로와 BFS)

문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 1. 문제 해석 수빈이가 동생의 위치에 도달할 때까지 최소한으로 이동..

백준 2667 - 단지번호 붙이기 (그래프 탐색, 순회)

1. 배경지식 BFS 와 DFS - DFS는 깊이 우선 탐색으로 끝까지 간다음 끝에 다다르면 첫 분기점으로 다시 돌아오는 재귀적인 수행을 하는 친구이고, - BFS는 넓이 우선 탐색으로 한 노드에 들어가서 연결된 노드들을 모두 탐색하고 다음 노드로 넘어가는 식의 친구이다. 구현적인 측면에서 DFS는 한 노드에 대해서 연결된 노드들을 재귀적으로 방문하여 첫 시작 노드로부터, 재귀가 종료될 때까지 자동으로 함수가 실행되고 종료되는 수행을 하고, BFS는 한 노드에 대해서 연결된 노드들을 모두 큐에 넣은 다음, 큐가 빌 때까지 다시 큐에서 한 노드를 꺼내 같은 수행을 반복하는 수행을 한다. 쓰임의 측면에서 (앞으로 내용이 더 추가될 부분.) DFS는 분기되는 응용에서 사용되고, BFS는 연결된 한 단지를 방문..

백준 2178번 - 미로 탐색 (그래프 탐색과 순회, 최단경로와 BFS)

BFS는 여기 적힌 대로, 큐를 사용해서 인접 노드들을 넓이에 우선하여 탐색하는 기법이다. 2차원 배열같은 맵에서는 갈 수 있는 곳들이 인접해있을 때, 그 구역 전체를 탐색하고 다음 구역으로 넘어가는 느낌의 수행을 하기도 한다. 1. 배경지식 - BFS와 최단경로 이번에 알아볼 BFS의 특징은 바로 최단경로이다. BFS는 말 그대로 너비 우선 탐색에 기반하는데, 너비라고도 할 수 있지만 트리에서 '높이'의 개념처럼 연결된 노드 중 같은 높이, 계층의 노드들을 먼저 모두 탐색한다. 따라서 원하는 노드에 다다랐다면, 최소한의 계층, 거리를 통과해 도착했다는 것이 보장된다. 따라서 BFS를 통한 경로가 곧 최단경로인 것이다. (단, 가중치가 모두 동일한 경우에 최단경로가 해당된다. 그렇지 않다면 가장 작은 가..

백준 7562번: 나이트의 이동 (그래프 탐색, 순회)

문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}로 나타낼 수 있다. 둘째 줄과 셋째 줄에는 나이트가 현재 있는 칸, 나이트가 이동하려고 하는 칸이 주어진다. 출력 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다. -------------..

백준 7576번: 토마토 (그래프 탐색과 순회)

문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 격자모양의 상자들..

728x90
728x90