처음에는 bfs로 푸려고 했으나 당연히 메모리 및 시간 초과... 배열의 크기가 클때는 완전탐색은 하지말자 ㅠㅠ...다이나믹 프로그래밍을 사용하는 경우를 정리를 잘 해놔야할 것 같다. 배열의 크기가 크고 누적값을 구하거나 기존 값의 영향을 받는거면 사용한다!그래서 다이
처음에 dfs를 통해 바이러스가 들어갈 자리를 구하다가 시간초과가 나서 파이썬 라이브러리 combination을 통해서 풀어주었다. 해결과정에서 선택되지 않은 바이러스를 놓을 수 있는자리를 어떻게 처리할까 싶어서 바이러스가 놓인 자리를 3으로 만들어주고 그 외에 바이러
AWS로 배포를 하고 프로젝트를 진행하면서 리눅스의 명령을 사용할때가 정말 많다. 그래서 기본적인 리눅스 명령어를 공부하고자 정리한다.List의 약자로 windows 명력 프롬프트의 dir 명령과 같은 역할을 한다. 즉 해당 디렉터리에 있는 파일의 목록을 나열하는 명령
말처럼 이동하는 부분과 변사이를 이동할때를 두개 다 넣어주되, k번을 넘지 않도록 해준다.k번 넘은 여부는 이전에 벽 부수고 이동하기 처럼 visited배열을 3차원으로 만들어줘서 넘은 여부를 확인해준다.3차원 배열 기억하기 -> \[\[False \* (k+1) fo
1차원 배열에서 연속된 배열이나 특정 값을 구하는 문제에서는 투포인터를 사용해서 시간복잡도를 줄일 수 있다.
union, find 함수를 이용해 연결된 부모 찾기를 통해 풀어주었다. 그러나 RecrusionErrorr가 떴는데 재귀 깊이 제한을 풀어주어야한다고 한다.import syssys.setrecursionlimit(1000000)
JAVA의 장점과 단점장점JVM 위에서 동작하기 때문에 운영체제에 독립적이다.가비지컬렉터가 메모리를 관리해주기 때문에 편리하다.단점JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다.다중 상속이나 타입에 업격하는 등 제약이 있는 것이 많다. 원시 타입과 참조
이진탐색을 활용해 문제를 풀어준다. 이때 count()함수를 따로 만들어 생기는 전선의 갯수를 리턴하고 가장 큰 라인의 절반 값부터 1씩 줄어들게 만들어 값을 구한다
was와 ws의 차이 \- was(web application server) \- 비즈니스 로직을 넣을 수 있음 \- tomcat, php, ASP, .Net 등 \- ws(web server) \- 비즈니스 로직을 넣을 수 없음
가장 긴 증가하는 수열(LIS)는 기존풀이 방식(dp)과 이분탐색으로 풀어볼 수 있다.문제와 같이 크기가 큰 수열은 시간초과가 뜨기 때문에 시간 복잡도가 O(nlog n)인 이분탐색을 사용해야한다.
그리디 알고리즘이라 하면 가장 큰 것부터, 가장 작은 것부터 이런 식으로 단순하게 생각했다. 그러나 난이도가 올라갈 수록 최적의 해를 찾는 것 또한 그리디의 일부라는 것을 알게 되었다. 이 문제에서 바꿔줄지 말지를 결정하는 것이 최적의 해고 , 또한 경우의 수도 생각해
풀이 방법을 생각하기 쉽지 않았다.각 행을 돌면서 같지 않는 부분이 있으면 전환해준다. 이때 전환은 함수를 이용해서 작성해준다.각 행을 다 돌았는데 리스트가 동일하지 않는 경우도 확인해준다.
그리디 알고리즘으로 풀 수 있는 매우 쉬운 문제이다. sort()를 통해 크기순으로 세워주고 그의 합을 지속적으로 구해주면 된다.
풀이 bfs를 활용해서 풀었고, 현재 1로 되어있는 부분만 q에 넣는다. 이후 인접한 과일들을 먼저 +1씩해주고 가장 큰 숫자를 출력
풀이 dfs를 통해 쉽게 풀 수 있으나, 답이 계속 오류가 떴다. 그 이유는 max값이 음수가 나올 수도 있는데, 처음에 max = 0으로 지정해줘서 뜨는 오류
📌 CI/CD CI Continuous Intergration을 의미 기본적으로 코드 여러 명의 많은 개발자들이 코드 베이스를 계속해서 통합하는 것이다. 여러 개발자들의 코드를 각각 가능한 빠르게 배포하는 것을 의미한다. 즉