본문 바로가기

프로그래밍

UML Overview 1990년대에 객체 지향적인 방법론에 대하여 OOAD, OMT, OOSE 등 많은 이론이 있었습니다. 1995년에 이들이 통합되어 Unified Method 0.8이 만들어졌고 이게 현재 모델링에 대한 사실상 표준으로 자리잡았습니다. 현재는 2015년에 릴리즈된 UML 2.5로 UML 2.0에서 정해진 내용들이 쓰이고 있습니다. UML은 세가지로 구분할 수 있습니다. 1. Structure Diagrams : System에 있어야 하는 것들에 대한 다이어그램. 2. Behavior Diagram : System에서 발생해야 하는 일들에 대한 다이어그램. 3. Interaction Diagrams : 컨트롤과 데이터의 흐름에 대한 다이어그램. 가장 많이 쓰이는 5가지 UML의 모습에 대해서 알아보겠습니다... 더보기
벽 부수고 이동하기[파이썬, JAVA, C++] # 파이썬 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from collections import deque n,m=map(int,input().split()) S=[list(map(int,[*input()])) for k in range(n)] D= [[[-1]*2 for j in range(m)] for i in range(n)] D[0][0][0]=1 q=deque() q.append((0,0,0)) dx,dy=[0,0,1,-1],[1,-1,0,0] while q: x,y,z=q.popleft() for i in range(4): nx,ny=x+dx[i],y+dy[i] if 0 더보기
Permutation [Python, Java, C++] Python 12345678910111213141516171819202122232425262728# N, M을 입력받는다. N, M = map(int, input().strip().split())# 숫자를 입력받는다.LST = list(map(int, input().strip().split()))# 숫자를 정렬한다.LST.sort() def myPrint(lst): for i in lst: print(i, end=" ") print() # M 개가 나올때까지 Recursion. 수열이므로 Visited를 사용한다.def permute(count,visited, current): if count ==M: myPrint(current) else: for i in range(N): if not visited[.. 더보기
[백준 1149 RGB 거리 ] 파이썬 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # 1149 RGB 거리 # 다이나믹 프로그래밍 # n = int(input()) cost = [] # [[R1, G1, B1], [R2, G2, B2], ...] # 집의 가격을 저장한다. for _ in range(n): cost.append(list(map(int, input().split()))) dp = [cost[0]] # dp = [[26, 40, 83]] for i in range(1, n): cost_per_color = [] # (초록, 파랑) | 빨강 # 현재 빨강을 선택했을 때 최소 저장 temp_red = .. 더보기
[백준 1697 숨바꼭질 ] 파이썬 보호되어 있는 글입니다. 더보기
[백준 2468 안전 영역] 파이썬 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 # 2468 안전 영역 # bfs # 파이썬 1512 ms DX = [1 ,0 ,-1 ,0] DY = [0 ,1, 0, -1] def bfs(x1, y1): # Spread Virus queue = [(x1, y1)] while queue: x, y = queue.pop() for i in range(4): nx = x + DX[i] ny = y + DY[i] if 0 더보기
[백준 2644 촌수 계산] 파이썬 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 # 2644 촌수계산 # BFS # 파이썬 56 ms N = int(input()) # 사람 수 A, B = map(int, input().split()) # 타겟 T = int(input()) # 관계 수 graph = [[]for i in range(N+1)] # 관계를 저장하기 위한 그래프 info = [0]*(N+1) # Start -> End로 걸리는 거리를 기록 for i in range(T): # 그래프 저장 P, C = map(int, input().split()) graph[P].append(.. 더보기
[백준 7576 토마토 ] 파이썬 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 # 7576 토마토 # bfs # Pypy3 912ms def count_zero(board): # 0이 몇개 있는지 파악합니다. count = 0 for i in range(M): for j in range(N): if board[i][j] == '0': count += 1 return count # BFS 이동 dx = [0, 1, 0, -1] dy = [-1, 0, 1, 0] .. 더보기