본문 바로가기

IT To do and To was

22년 12월 14일_Moonite 안드로이드 개발 진행, Nail Manna 앱 영상 공유, Python 별그리기, 최단경로 알고리즘

728x90
반응형

수요일[날이 많이 쌀쌀해졌어여]

 

1. Moonite 안드로이드 + nailmanna 영상공유

2. python 별그리기

3. 알고리즘 

4. 이것이

 

1>

알고리즘 공부만하다가 안드로이드 개발을 하다보니 정말 많이 잊었더라..

일단 오늘은 drawable에 이미지를 추가하고 activity 하나를 더 만들며, 

별자리도 보여줄 수 있는 switch 도 만들었다.

 

그 외 이전에 안드로이드 개발을 하였던 영상도 기재하려 한다.

nailmannatesting.mp4
13.63MB

 

 

나 혼자 이걸 어떻게 만들었지..? 대단한걸...(자아도취)  //안드로이드 개발에서 한함 (서버와 모델은 만들지 않았습다)

 

2>

a = 8 for i in range(a): print(' ' * ((a - 1) - i), end = '') print('*' * (2 * i + 1))

3>

진료순서 정하기

def solution(emergency):
    answer = [0] * len(emergency)
    for i in range(1,len(emergency)+1):
        answer[emergency.index(max(emergency))] = i
        emergency[emergency.index(max(emergency))] = 0
    return answer

7의 개수

def solution(array):
    answer = 0
    for i in array:
        i = list(str(i))
        for j in i:
            if j == "7":
                answer += 1
    return answer

다른사람이 한 풀이

def solution(array):
    return str(array).count('7')

 

4>

최단 경로

최단 경로 문제는 보통 그래프를 이용해 표현하는데 각 지점은 그래프에서 노드로 표현되고 지점 간 연결된 도로는 그래프에서 간선으로 표현된다. 

최단거리 알고리즘은 다익스트라 최단 경로 알고리즘, 플로이드 워셜, 벨만 포드 알고리즘 3가지이다

 

-- 다익스트라 최단 경로 알고리즘

0보다작은 값을 가지는 간선을 의미하는데 현실 세계의 길은 음의 간선으로 표현되지 않음

그리디 알고리즘으로 분류된다

1. 출발 노드를 설정

2. 최단 거리 테이블을 초기화

3. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택

4. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리테이블을 갱신

5 위 과정 3, 4를 반복

 

다익스트라 알고리즘은 최단 경로를 구하는 과정에서 각 노드에 대한 현재까지의 최단 거리 정보를 항상 1차원 리스트에 저장하며 리스트를 계속 갱신한단ㄴ 특징이 있다.

 

현재 처리하고 있는 노드를 기준으로 주변 간선을 확인한다. 나중에 현재 처리하고 있는 노드와 인접한 노드로 도달하는 더 짧은 경로를 찾으면 해당 노드로 판단하고  따라서 방문하지 않는 노드 중에서 현재 최단 거리가 가장 짧은 노드를 확인해 그 노드에 대하여 4번 과정을 수행한다는 점에서 그리디 알고리즘으로 볼 수 있다.

 

다익스트라 vs 데이크스트라

둘 다 같은뜻이다.

import sys
input = sys.stdin.readline
INF = int(ie9) # 무한을 의미하는 10억으로 설정

n, m = map(int, input().split())
start = int(input())

graph =[[] for i in range(n+1)]
visited = [False]*(n+1)
distance = [INF] * (n+1)
# 모든 간선의 정보를 입력받기
for _ in range(m):
	a,b,c = map(int, input().split())
    # a번 노드에서 b번 노드로 가는 비용이 c라는 의미
    graph[a[.append(b,c))
# 방문하지 않는 노드 중에서, 가장최단 거리가 짧은 노드의 번호를 반환
def get_smallest_node():
	min_value = INF
    index = 0 # 가ㅏㅇ 최단 거리가 짧은 노드(인덱스)
    for i in range(i, n+1):
    	if distance[i] < min_value and not visited[i]:
        	min_value = distance[i]
            index = i
        return index
def dijkstra(start):
	# 시작 노드에 대해서 초기화
    distance[start] = 0
    visited[start]= True
    for j in graph[start]:
    	distance[j[0]] = j[1]
    # 시작 노드를 제외한 전체 n-1개의 노드에 대해 반복
    for i in range(n-1):
    	#현재 최단 거리가 가장 짧은 도르르 꺼내서,방문처리
        now = get_smaillest_node()
        visited[now] = True
        # 현재 노드와 연결된 다른 노드를 확인
        for j in graph[now[:
        	cost = distance[now] + j[1]
            # 현재 노드를 거쳐서 다른 노드로 이동하는 거리가 더 짧은 경우
            if cost < distance[j[0]]:
            	distance[j[0]] = cost
# 다익스트라 알고리즘 수행
dijkstra(start)

# 모든 노드로 가기위한 최단 거리를 출력
for i in range(1, n+1):
	# 도달할 수 없는 경우, 무한(INF)라고 출력
    if distance[i] == INF:
    	print("INFINITY")
    else:
    	print(distance[i])

다익스트라 알고리즘은 O(V^2)의 시간 복잡도를 가지고 V는 노드의 개수를 말한다.

이후 단계마다 방문하지 않은 노드중에서 최단 거리가 가장 짧은 노드를 선택하기 위해 매단계마다 1차원 리스트의 모든 원소를 확인한다.

 

오늘의 삐까 상식으로

에멘탈치즈는 스위스에서 유래된 걸로 1200년대부터 시작된 유서가 굉장히 깊은 치즈인데, 해당 치즈는 살균이 되지 않는 치즈이다, 그런데 스위스에서 유학을 했던 김정은국무위원장이 해당 치즈를 굉장히 좋아한다고 한다 수행자를 스위스로 보내서 갖고오라고 지시할 정도 

 

해당 치즈는 지방함유량이 많기 때문에 열을 과도하게 가해서 먹게되면 나쁜기름맛이 많이 올라올 수 있으니 상온에 먹는게 적절하다. 그리고 숙성 기간은 짧으면 4개월 길면 12개월이라 하더라

 

이런거는 왜 잘 외워질까?

 

// yesterday wished to today list.

. monnite 개발

. 알고리즘

. 이것이

 

tomorrow wish list

. 병원들리기

. 면접준비하기

. ㅊㅅ

. 알고리즘

. moonite 개발

728x90
반응형