본문 바로가기

728x90
반응형

전체 글

(131)
[GitHub] 명령어 정리 1. git init 맨 처음 초기화 git remote add origin https://깃허브 repo 주소 git remote -v # 상태 확인 로컬 저장소와 깃허브 repo를 연결 2. git add "file_name" git add . 올리고 싶은 file name을 입력하거나, 모든 파일을 저장할 때 3. git commit -m "fist commit" 커밋해줌. -m뒤의 내용은 설명 4. git push origin master master가지 대신 다른 이름의 가지 넣으면 됨 git status # 상태 확인
[백준 / 2206] 벽 부수고 이동하기 - Python https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 벽을 하나 부순 map과 벽을 부수지 않은 map을 이용하였다. from collections import deque n, m = map(int, input().split()) map = [] for _ in range(n): map.append(list(input())) drow = [-1, 0, 1, 0] dcol = [0, 1, 0, -1] map[0][0] = 1 ..
[백준 / 1987] 알파벳 - Python https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 시간을 줄이는 것이 제일 큰 숙제였다. pop, push 작업이 많은 경우 list를 통해 구현하는 것 보다 deque를 이용하는 것이 월등히 빠르다. import sys from collections import deque row, col = map(int, sys.stdin.readline().split()) graph = [] for _ in range(row): graph.appen..
[백준 / 3190] 뱀 - Python https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 뱀의 위치를 리트스에 저장한다. 다음 칸에 가게 된다면 맨 뒤 위치를 지우고, 다음 위치를 저장해서 길이를 유지한다. 만약 사과를 먹게 된다면 맨 뒤 위치를 지우지 않고, 다음 위치를 저장해서 길이를 늘린다. 만약 다음 위치가 벽이나(N을 넘어가거나 0보다 작아지는 경우), 뱀의 몸이라면(다음 위치가 body리스트 안에 있다면) 해당 이동을 멈추고 현재 시간을 출력한다. import sys N = int..
[백준 / 15686] 치킨 배달 - Python https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 치킨집을 M개만큼 골라아한다 -> 조합(combination) 치킨집 M개를 고른 모든 경우를 계산해준다. def combi(N, start, end, prev=[]): all_set = [] numList = [i for i in range(start, end)] for i in numList: temp = prev[:] temp.append(i) if N == 1: all..
[보기 쉬운 Algorithm] 냅색(Knapsack) 알고리즘 - Python 냅색 알고리즘은 DP(Dynamic Programming)의 한 종류로 많이 쓰이는 방식 중 하나이다. 가방문제에 가장 많이 등장한다! 가방에 담을 수 있는 무게 제한이 있고, 각각의 물건은 무게와 가치가 있다. 가방의 무게를 초과하지 않게 물건을 많이 담아 최고 가치를 가지게 하는 문제이다. for i in range(1, n+1): for j in range(1, k+1): w = thing[i][0] # 물건의 무게 v = thing[i][1] # 물건의 가치 if j < w: # 현재 무게가 물건 보다 작다면 table[i][j] = table[i-1][j] # 위의 값을 그대로 else: table[i][j] = max(table[i-1][j], table[i-1][j-w]+v) https://..
[백준 / 12865] 평범한 배낭 - Python https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 냅색 알고리즘(Knapsack Algorithm) (처음에는 재귀함수로 다 모든 경우를 계산해서 시간이 너무 오래 걸렸다.) n, k = map(int, input().split()) table = [[0]*(k+1) for _ in range(n+1)] thing = [[0, 0]] for i in range(n): thing.a..
[백준 / 9251] LCS - Python https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net s1 = input() s2 = input() s1_len = len(s1) s2_len = len(s2) table = [[0 for _ in range(s2_len+1)] for _ in range(s1_len+1)] for i in range(1, s1_len+1): for j in range(1, s2_len+1): if s1[i-1] == s2..

728x90
반응형