Do it! 알고리즘 코딩 테스트 책을 공부하며 나온 문제들을 편집기에서만 정리하고 있었는데블로그에 공유하면 좋을 것 같아 시리즈로 작성하려 합니다.프로그래머스만 풀어오다 백준은 역시 좀 어색하네요ㅎㅎ모두들 화이팅입니다.😃
버블 정렬 = $O(n^2)$병합 정렬 = $O(nlogn)$위 시간복잡도를 알고있다고 가정하고 분석해보면버블 정렬 = $1,000^2$ = $100,000,000$ (1억)병합 정렬 = $1000log1000$ = $3,000$ (3천)시간제한은 1초이다 즉, 1억번
N개의 숫자가 주어지고 예제를 보면 숫자의 범위는 int 나 long 타입으로 받을 수 없다.String 타입으로 받아야 할 것 같다.N개의 길이를 담을 수 있는 배열을 초기화한다.사용자의 입력을 Stirng -> char 타입으로 바꿔 위 배열에 넣어준다.예제를 보
시간제한 2초 = 2억번의 연산 안에 해결해야한다.첫번째 줄 = 과목수두번째 줄 = 각 과목 점수각 과목 점수 중 최대값을 M 으로 칭하고 모든 점수를 $점수/M\*100$ 연산을 통해 새로운 점수로 고친 후 새로운 평균을 구해야 한다.입력받은 점수를 배열에 저장한다.
시간 제한 1초 = 1억번의 연산안에 해결되야한다.$1 <= N <= 100,000$ and $1<= M <= 100,000$최대치로 생각해봤을때 100,000개의 구간의 합을 매번 계산한다..? 1초만에 계산을 끝낼 수 없을것 같다.그렇다면? 구
배열의 크기 : $1<= N <= 1024$질의 개수 : $1 <= M <= 100,000$질의가 들어올때 마다 로직을 수행해 합을 구하기보다는정답판 같이 바로 답을 출력할 수 있는 형태를 만들어 놓는게 좋다.구간합을 이용해 접근해보자예제의 값을
제한 시간 1초 : 1억번의 연산안에 끝나야한다...!$1<= N <= 10^6$, $2 <= M <= 10^3$$10^6$ 개의 수에 대해 모든 구간 합을 구해 M 으로 나누어 떨어지는 구간 합의 개수를 구해야한다.딱 봐도 1초안에는 무리데스..
제한시간 2초 = 2억번의 연산안에 끝나야한다.$N$ 의 최댓값 = 10,000,000$O(NlogN)$ = 10,000,000 -> $10000000log_210000000$ = 약 230,000,000 (2억3천) 위 시간복잡도는 제한시간을 넘어가므로 위 시간복잡도
문제 안에서 얻을 수 있는 정보들을 찾아보자!시간제한 2초 = 약 2억번의 계산안에 구해야한다.시간복잡도는 $N$ 기준으로 $N^2$ 이 되어버리면 2억번이 넘어가므로, $N^2$ 이하의 시간복잡도를 가진 알고리즘을 사용해야 한다.2개의 재료로 갑옷이 만들어진다. +
문제안에서 얻을 수 있는 정보시간제한 2초 = 약 2억번의 연산안에 해결해야 한다.$N = 2000$ 즉, $N^2$ 의 시간복잡도 보다 작은 시간복잡도를 가진 알고리즘으로 접근해야한다."좋은 수" 가 되는 수는 연산에서 제외시켜야 한다.수의 위치가 다르면 값이 같아도
지문에서 알수있는 정보들A, C, G, T 의 문자들로만 이루어진 문자열 = DNA 문자열DNA 문자열의 부분문자열을 사용한다.부분문자열에 등장하는 문자는 개수에 대한 규칙이 있다.DNA문자열 중 규칙에 통과하는 부분문자열의 개수를 구하자그 외 정보들시간제한 2초 =
처음 문제를 읽었을때, 잘 이해가 되질 않았다.천천히 정리하며 기록해보자예제를 기준으로 설명해보겠다.$N=12$ , $L=3$$AN == A{12}$$A\_{i-L+1}$ ~ $A_i$ 중 최소값이 $D_i$ 일 때, D에 저장된 수를 출력해야한다. $i <= 0
문제에서 알 수 있는 정보들시간제한 2초 = 약 2억번의 연산 안에 해결해야한다.스택에 push하는 순서는 반드시 오름차순을 지켜야한다.임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들수 있는지 없는지, 있다면 push = + , pop = - 로 출력해야한다.