얼마전에 추가된 tony님 문제를 풀었습니다. 필수 유형들과 어려운 유형들이 몇 개 있는데요. 알아가면 좋을 법한 트릭을 하나씩 소개해 드리겠습니다. 먼저 산책 시리즈입니다. large나 small이나 별 다른 건 없으니, 풀어보도록 합시다. 문제를 읽어보면, 제일 중요한 것은 딱 하나임을 알 수 있어요. S에서 E로 갈 때 최단 거리가 여러개 있다면 사전 순으로 가장 앞선 것을 택해라. k번째는 훨씬 어려워서, 사전순으로 가장 앞선 것을 택하라고 했을 겁니다. 그러면 어떤 정보가 필요할까요? 즉, 모든 i에 대해서, e까지의 최단 거리를 구해야 함을 알 수 있어요. 이런 그래프가 있고, s가 1, e가 4라고 해 봅시다. 처음에 우리는 1에서 4까지 가는 최단 경로 중에 사전순으로 앞선 경로를 구해야 ..
전체 글 검색 결과
안녕하세요. 이 글에서는 List의 removeAll 메소드에 대한 질문이 와서 이에 대해 써 보도록 하겠습니다. 콜렉션에 대해서 입문하셨다면, clear와 혼동하기 매우 쉽습니다. 이 둘은 쓰이는 용도가 다릅니다. 어떻게 용도가 다른지, 정확한 복잡도는 어떻게 되는지 언급해 보겠습니다. list에 0부터 99999까지 추가합니다. 다음에, list m에도 0부터 99999까지 추가합니다. 다음에 removeAll 메서드를 호출하였습니다. 그러면 내부적으로 batchRemove 함수를 호출합니다. 일괄 처리할 때 그 batch입니다. 이로 미루어 보았을 때, Collection에 있는 삭제할 원소 하나 하나를 하나의 작업 단위로 보고 처리한다는 말이 되어 버립니다. 즉, 어떤 원소 m개를 삭제하려고 할 ..
안녕하세요. 이번 시간에는 fork에 대해서 배워보도록 하겠습니다. 리눅스의 fork와 비슷한 거 같은 것은 기분 탓일까요? 원본 repo를, 복제하는 것이 fork입니다. fork 하고 clone을 해서 적절히 수정 사항을 작성한 다음에 Pull Request를 보내서 merge 시키는 것은 많이 들어보셨을 텐데요. 이 일련의 과정을 제 서버에 구축한 gitlab으로 실습해 보겠습니다. c kh는 cho kh의 GitExample의 developer role을 가지고 있었다고 합시다. gitExample의 Fork를 눌러 봅시다. 그러면, A fork is copy of a project라고 뜨면서, original project의 영향 없이 change를 할 수 있다고 뜹니다. 이것이 fork의 전부..
assert 함수로 검증하는 과정 없이 문제 출제를 하는 것은 상상할 수 없습니다. 특히 복잡한 데이터 제너레이터를 여러 개 구현했다면, 검증하는 과정은 필수로 들어가야 합니다. 대회 set 하는 데 오래 걸리는 이유 중 하나입니다. 여기에서는 assert가 뭘 하는 함수이고, 제가 낸 문제에서 어떤 식으로 검증했는지 간단하게 언급해 보도록 하겠습니다. 아래 예제를 보겠습니다. assert(1 != 1); 이 있습니다. 안에 조건문 비슷한게 들어갔는데요. 실패합니다. 왜냐하면 1 != 1을 만족해야 하는데 1과 1은 같기 때문입니다. 정리하면, assert 함수에는 condition을 넣습니다. 이 조건이 만족하지 않으면 assert는 실패해 버립니다. 그래서, 문제를 만들 때에는, 데이터가 조건에 맞는..
numpy의 reshape 메소드는 데이터의 변경 없이 shape만 바꿉니다. 예제 프로그램 몇 개를 보면서 이해해 보도록 하겠습니다. 먼저, 2번째 줄은 numpy 배열 [1, 2, 3, 4, 5, 6]을 생성합니다. A는 이렇게 그려질 겁니다. 4번째 줄에서 A.reshape((2, 3))이라고 되어 있는데요. 이는 A의 데이터는 바꾸지 않고 모양만 2행 3열짜리로 바꾸겠다는 의미입니다. 2행 3열이면 위와 같이 그려집니다. 실행 결과는 위와 같습니다. 또 다른 예제를 들어 보겠습니다. 이것은 어떨까요? 2번째 줄까지 수행하면, 아래와 같은 넘파이 배열이 생성될 겁니다. 그런데, reshape((2, 2, 2)) 라고 하였습니다. 그러면, 이것은 높이가 2이고, 세로가 2이고, 가로가 2인 모양으로 ..
최근댓글