전체 글

전체 글

    [백준] 1012. 유기농 배추 - 파이썬

    https://www.acmicpc.net/problem/1012 풀이 [백준 3197 - 백조의 호수], [백준 7569 - 토마토] 문제와 유사했던 문제. 마찬가지로, BFS를 이용해 풀이. 배추밭을 2차원 배열로 초기화, 이후 입력된 배추의 좌표를 가지고 2차원배열에 적용. 매 반복마다, 배추가 없는 지 확인. 배추가 있다면, 제일 먼저 발견된 배추를 Queue에 넣고, 먹어치워진 배추의 상하좌우를 탐색하며 BFS를 이용해 탐색을 진행. 인접한 모든 배추를 처리하고 나서, 다시 다음 반복을 진행~ 복잡한 건 없어서 주석 이외 부가 설명은 필요하지 않은 듯.. ^ㅁ^ from collections import deque test_case_cnt = int(input()) # 결과값 저장 worms =..

    [백준] 7569. 토마토 - 파이썬

    https://www.acmicpc.net/problem/7569 풀이 [백준 3197 - 백조의 호수] 문제와 상당히 유사했던 문제. BFS를 이용해 풀이함. 주의할 점은, 토마토를 익히는 과정에서 한 번 익혀지고, queue에 들어간 토마토는 값이 이미 1이 되었기 때문에, visited나 queue에 이미 존재하는 지 확인할 필요가 없음. in 이나 not in 연산자는 O(N) 의 time complexity를 가지므로, for나 while문 안에서 남발했다가는 그대로 시간초과가 되기 쉽다. [백준 3197 - 백조의 호수] 보다 쉬웠던 점은, 토마토가 다 익었는지 확인하는 과정을 Brute-Force로 처리해도 되었음. 그러나 3차원 배열을 써야 하므로 index의 순서가 바뀌지는 않았는지 항상..

    [백준] 2281. 데스노트 - 파이썬

    https://www.acmicpc.net/problem/2281 풀이 DP (Dynamic Programming) 문제. 나는 기본적으로 DP는 bottom-up 방식으로 푸는 것을 선호하고, 풀이도 bottom-up 방식으로 먼저 생각해내곤 하는데, 이 문제는 잘 생각이 나지 않아 시도하다 다시 top-down 방식으로 선회한 문제. top-down 방식으로 푸는 것이 훨씬 구현하기 수월했다. 먼저 기저 상태를 0으로 설정하고, memoization을 활용해 이미 계산된 dp[index]가 존재하면 (maxNum으로 초기화했으므로, maxNum보다 작으면 값이 담긴 것) 그 값을 return. dp[index]는 index+1번째의 이름을 '새로운 줄' 에 작성할 때, 남은 공간들의 제..

    [백준] 1107. 리모컨 - 파이썬

    https://www.acmicpc.net/problem/1107 풀이 이것저것 여러 방법을 생각해 봤으나, 마땅한 수가 생각나지 않았음. 문제 조건에서 채널이 500,000개 정도였기 때문에 Brute-Force로 시도해볼 만하다고 생각해서 Brute-Force로 실행. 다만 0~500,000 까지의 수를 모두 대입해 보기보다는, 고장난 버튼을 염두에 두고, 조합 가능한 모든 6자리까지의 경우의 수를 미리 만들어 두고, 그 이후 처리하는 것이 속도 면에서 이득이다. # 100에서 움직일 때와 버튼을 누르고 움직일 때, 둘 중 최솟값을 채택 channels[ch] = min(abs(goal - 100), len(str(ch)) + abs(goal - ch)) 0 ~ 500,000 까지의 모든 수를 대입한..

    [백준] 1655. 가운데를 말해요

    [백준] 1655. 가운데를 말해요 - 파이썬 https://www.acmicpc.net/problem/1655 풀이 1 일단 첫 시도는, 최소 힙을 사용. 입력받은 수들의 리스트를 저장 후, 반복문을 돌릴 때 마다 리스트를 알맞게 slicing하여 heapify, 그리고 매 반복마다 pop 후 heapify를 2/n회(가운데 값을 찾을 때 까지) 반복하여 중간값을 찾도록 코드를 짰다. 결과는 시간초과. python에서의 heapify() 는 O(N)의 time complexity를 가지고, heappop(), heappush() 는 각각 O(logN)의 time complexity를 가지므로, 간단히 계산해 봐도 최소 O(N^2) 이상의 complexity이고, 그냥 생각나는대로 대충 시도해봤기 때문에..

    요즘 하는 생각들..(2) - 회고. 그리고 의식의 흐름

    분명 1편과 같은 시기에, 1편은 개발 관련으로, 2편은 이것저것 다른 생각들로, raw한 주제들을 던져 놓고 나중에 글로 써내려가 봐야지~ 했는데... 1편 쓴 지 한달이나 지나서야 펜을 잡게 됨. (근데 펜이 아니고 키보드인) 1~2월도 출근하고 일하면서, 계절학기도 병행하고, 이래저래 바쁘게 할 일들이 계속 생기다 보니 짬이 나지 않았다. 사실 쓰려면야 짬짬이 쓸 수 있었을 테지만, 아무래도 키보드를 한 번 잡으면 잡았을 때 다 끝내야 직성이 풀리는 성격이라, 또 이거 한 번 쓰려면 몇 시간씩 걸린다는 것을 알고 있기에, 좀처럼 마음먹기가 쉽지 않았다. 그래서 마지막 출근일 이후에 키보드를 잡기 시작했다. ^ㅁ^ 작년, 그러니까 2022년은 얻은 것도 많고, 즐거웠고, 행복했던 한 해였던 것 같다...

    [Flutter] FAILURE: Build failed with an exception. A problem occurred evaluating project ':app'. > path may not be null or empty string. path='null' 오류

    Environments M1 Mac pro 14 VSCode Flutter 3.3.8 Galaxy A52 (SM A525F) Error Message FAILURE: Build failed with an exception. * Where: Build file '/Users/jaewonlee/Desktop/milkflutter/android/app/build.gradle' line: 69 * What went wrong: A problem occurred evaluating project ':app'. > path may not be null or empty string. path='null' * Try: > Run with --stacktrace option t..

    요즘 하는 생각들.. (1) - 나는 잘 나아가고 있는가?

    22년 연말부터 연초(라기엔 벌써 22일이 되어버린)까지의 생각을 마구 써놓은 글.. 생각날때마다 말머리를 적어 놓고, 글에 살을 붙이고, 짜깁고, 생각나는대로 휘갈긴, 읽는 사람을 배려하여 쓴 글이 아니고, 여러 고민과 생각들을 글로써 풀어낸 것이라.. 글이 쉬이 읽히지는 않을 수 있습니다.. ^ㅁ^ 한마디로 그냥 의식의 흐름대로 주저리주저리 한 글임 ㅎㅎ 요즘.. 이런저런 고민이 참 많이 생긴다. 또 내가 해결하지 못 할 고민은 하지 말라는 말이 있는데, 해결하지 못 할 고민은 아니다. 뭐랄까.. 정답이 없는 고민들인 것 같다. 개중에 이제 완전 개발 관련된 고민들을 읊어 보자면, 요즘 일하는 데에 플러터를 쓰니까 플러터 관련이 많이 나오긴 한다. 예를 들면 가장 기초적이고 단순한 고민으로는 상위 W..