전체 글 170

1월 만다라트 회고

* 건강 결과 요약 : 30점, 다음 달 수영 등록 안 했는데, 어떻게 해야 갈 수 있을까? 수영 1월까지 다녔다, 근데 3회 / 7회 정도 밖에 못 감ㅠ, 안 쉬고 4-5바퀴 가넝한 골격근량: 주 2회 운동 못 하는 중 ㅎㅎ,. 하루 한 번 가벼운 스트레칭은 대체로 지키는 중 하루 물 5잔까지는 아니고 3잔 이상은 매일 마신듯 병원 제때 잘감, 자궁경부암 주사 아직, 치과 0회 도파민 디톡스. 뭔데. 그거 어떻게 하는 건데. * 나만의 경험 결과 요약 : 50점, 일기 더 자주 쓰자. 수입 언제 생기냐 수입 아직 0, 기부금 3천원 유지중ㅎ 전시회 0회, 독서 0권 (오늘 한 권 읽어야겠다) 경주 여행 X 고정 옷, 있음ㅋㅋㅋㅋ 까망 니트에 청바지, 요즘은 어그 1월 일일 플래너 거의 매일 씀, 일기는..

log ✎⁾⁾⁾ 2023.02.04

[DP] 백준 9184. 신나는 함수실행

백준 9184. 신나는 함수실행 문제 요약 : 재귀함수로 돌리면 너무 오래 걸린다! 어떻게 할까? 다음과 같은 재귀함수 w(a, b, c)가 있다. if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) 위의 함수를 구현하는 것은 매우 쉽다. 하지만, 그대로 구현하면 값을 구하는데 매우 오랜 시간이 걸린다. (예를 들면, a=15, b=15, c=15) a, b..

[python] 문자열 마스터하기_2 : 문자열 합치기 (join, lambda, map)

''.join(map(lambda x: morse[x], letter.split())) ''.join([morse[x] for x in letter.split()]) 리스트를 조인하거나, map으로 나온 객체들을 조인할 수 있다. map 사용할 때 람다식을 함께 사용하는 방법을 익혀두면 좋다. 예시 문제 : 키를 기준으로 값에 해당하는 문자열들을 병합해 return 프로그래머스 모스부호(1} 문제 바로가기 제출 코드

아바타와 잡념

시각적으로 꽤나 충격적이라는 영화 아바타 후기를 들었다. 3시간 내내 아쿠아리움에 있는 것 같다는 공통적인 이야기를 들었다. 지인은 이에 더해 앞으로는 영화배우가 없어지지 않을까 생각했단다. 내 생각은 좀 다르다. 아직 어떤 대사에 어떤 표정을 짓고, 말을 하는 지 같은 언어적-비언어적 표현은 인간도 학습하는 데 굉장히 오래 걸리는 분야이기 때문에 자유자재로 감정을 표현하고 창조하는 그래픽은 아직 먼 미래일 것이다. 오히려 한 명의 배우를 여러 배역에 사용하는 영화를 제작하지 않을까 싶다. 배우는 연기력 외에 신체적인 한계를 가지게 되지만, CG 기술력으로 외적인 한계를 뛰어넘을 수 있게 되기 때문이다. 이러한 시도는 벌써 몇차례 있었다. 배우의 나이를 젊어보이게, 혹은 늙어보이게 하는 그래픽을 사용하고..

log ✎⁾⁾⁾ 2022.12.30

[BFS, 그래프] 프로그래머스 lv3. 블록이동하기

문제 문제링크 로봇은 90도 회전하거나, 평행이동을 한다 한 번 이동할 때 시간이 1씩 증가한다 n,n에 도착했을 때의 시간을 구해라 아이디어 q에서 꺼내서 if 끝 : 횟수 out 이동 조건 맞으면 q에 (좌표, 횟수) 넣기 평행이동 회전 가로 => 세로 세로 => 가로 알고리즘, 시간복잡도 BFS 시간 복잡도 O(V+E)? 자료구조 q = [[x1,y1,x2,y2], 횟수] hist = [[x1,y1,x2,y2], [...], ...] # q에 들어갔던 좌표인지 확인, x1 y1 x2 y2 => 왼오상하 순서로 넣고 뺀다 함수 move : 이동후 좌표 리스트 반환 bfs : 큐돌기 ''' 회고 블록의 회전이 꽤나 까다로웠다. 블록 회전 부분을 for 반복문으로 하면 코드가 더 간결해질 거 같다. 회전..

[플로이드 와샬] 백준 11404. 플로이드 (기본)

플로이드는, 다익스트라, 벨만 포드 알고리즘은 모두 한 시작점에서 다른 모든 정점까지의 거리를 구한다. 하지만 모든 쌍 간의 최단 거리를 구하기 위해서 보다 빠르고 간단한 방법이 플로이드 이다. 모든 쌍에 대한 최단 거리 알고리즘 알고리즘 특징 경유점이 존재 목적지를 갈 때 중간에 다른 노드를 거치는 것이 더 비용이 적을 수 있음. graph[u][v] 정점 u에서 v로 가는 최단 거리를 저장 논리 자체는 어렵지 않았고, 플로이드는 중간 노드를 기준으로 for 를 세 번 돈다는 점 (중간 노드가 최상단 반복문) 그래서 그래프가 크지 않을 때 쓸 수 있다는 점 (시간 복잡도가 n**3)을 명심명심~ 무한 값을 변수에 할당해서 쓰면 편함 핵심 구조 g = [[무한 값] for _ in range(노드수 + ..

[다익스트라, Dijkstra, 구조] 백준 1753. 최단 경로

다익스트라는, 단일 시작점 최단 경로 알고리즘으로, 시작 정점 s에서부터 다른 정점들까지의 최단 거리를 계산한다. (출처: 책 알고리즘문제해결전략) 알고리즘 특징 우선순위 큐(파이썬에서는 heapq 사용)에 정점의 번호와 함께 지금까지 찾아낸 해당 정점까지의 최단 거리를 쌍으로 넣는다. 정점까지의 최단거리를 기준으로 정점을 배열함으로써 아직 방문하지 않은 정점 중 시작점으로부터의 거리가 가장 가까운 점을 찾는 과정을 간단하게 한다. 유의할 점은, 각 정점까지의 최단 경로가 갱신될 수 있다는 점이다. 핵심 구조 import heapq g = [[] for _ in range(노드수 + 1)] for _ in range(노드수): 출발노드, 도착노드, 가중치 = map(int, input().split())..

[DP, 2차원, 누적합, 파이썬] 백준 11660. 구간합구하기

2차원 DP를 푸는 게 아직 너무 어색하다, 어려웠던 점 누적합 데이터를 쌓아가는 부분 누적합 그래프를 바탕으로 일부 값을 계산하는 식을 짜는 부분 참고한 블로그 [python/파이썬] 백준 11660 구간 합 구하기 5 문제 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경 sodehdt-ldkt.tistory.com [백준] 11660 구간 합 구하기 5 (python) - 누적 합 (2차원) 정리 문제 링크 : https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의..

[BFS, 파이썬] 2146. 다리만들기 (!!)

메모리 초과 ➔ 정답처리 ➔ 개선 분석한 차이점 메모리 초과 케이스 (1차코드) : 56번쯤 라인에 바다 & 거리값 입력 안되어있으면 지금까지 온 거리 +1 이랑 기존 입력값이랑 min 비교하는데, 안해도 됨.. . BFS가 어떤 식으로 전개되는지 잘 안그려진다. 이 조건이 2차 코드에서 왜 없어도 되는지 이해가 잘 안간다. BFS는 칸마다 최단거리로 채워진다는 특징 때문인듯, 이미 방문했으면 굳이 안채워도 되나봐 secChecked 라고 구획을 그린 그래프를 별도로 두고, 이거로 visited도 판단함.. 그래프가 커질수록 부하가 걸렸나 => 메모리 초과의 원인인 듯 정답처리 된 케이스 (2차코드) : 섬 입력받은 표에 그대로 구획을 표시한거로 활용하고, visited True False 로 접근해서 ..