문제 소개 Level 1 https://school.programmers.co.kr/learn/courses/30/lessons/147355 테스트 케이스 "2147483649" / "2147483650” / 1 풀이 public class Pr147355 { public int solution(String t, String p) { int answer = 0; int start = 0; int end = p.length(); while(end < t.length()+1) { long tmp = Long.parseLong(t.substring(start, end)); if(tmp
이번에는 투 포인터 알고리즘에 대해서 정리해보려고한다. Two Pointer? 투 포인터 알고리즘은 하나의 배열에서 두개의 원소를 가리키는 서로 다른 인덱스를 움직이며 답을 내는 알고리즘이다. 한 방향으로만 인덱스를 증가시켜 원하는 값을 얻어오게되는 것이다. 예를 들어 살펴보자. (1 3 5 7 9, 연속된 여러 원소의 합이 10을 넘는 경우가 몇 번있는가?) 1회 start : 0, end : 1, cnt : 0 sum : 1 + 3 = 4 합계가 10을 넘지 않으므로 end를 1증가 시킨다. 2회 start : 0, end : 2, cnt : 0 sum : 1 + 3 + 5 = 9 합계가 10을 넘지 않으므로 end를 1증가 시킨다. 3회 start : 0, end : 3, cnt : 0 sum : ..
이번에는 이분 탐색에 대해서 정리해볼 것이다. 이분탐색이란? 정렬되어 있는 배열에서 특정한 값을 찾아내는 알고리즘이다. 배열에서 중간 값을 선택하여 찾는 값과 비교하고, 중간 값이 찾는 값 보다 작다면 우측을 대상으로 찾는 값 보다 크다면 좌측을 대상으로 탐색을 진행해나가며 탐색범위를 반씩 줄여나가는 탐색 방식이다. 예를 들어 살펴보자. ( 2 3 5 7 9 13 15 20, 찾는 값 = 9 ) 1회차 2 3 5 7 9 13 15 20 가운데 값인 7을 선택하여 찾는 값인 9와 비교한다. 중간 값이 더 작기 때문에 우측을 기준으로 탐색을 진행한다. 2회차 9 13 15 20 이번에도 역시 가운데 값인 13을 선택해서 찾는 값인 9와 비교한다. 중간 값이 더 크기 때문에 좌측을 기준으로 탐색을 진행한다. ..
이번에는 삽입 정렬에 대해서 정리해보려고한다. 삽입 정렬이란? 삽입 정렬은 두 번째 자료부터 시작해서 그 앞의 자료와 비교하여 교환하는 방식의 알고리즘이다. 두 번째는 첫 번째 자료와 비교하여 교환하고, 세 번째는 두 번째와 첫 번째자료와 비교하여 교환하는 방식으로 진행된다는 것이다. 이미 정렬된 부분과 비교하여 교환하면서 자기 자리를 찾아 삽입하기에 삽입 정렬이라고 불린다. 예를 들어 살펴보자. (8 5 6 2 4) 1회전 8 5 6 2 4 → 5 8 6 2 4 2회전 5 8 6 2 4 → 5 6 8 2 4 3회전 5 6 8 2 4 → 5 6 2 8 4 → 5 2 6 8 4 → 2 5 6 8 4 4회전 2 5 6 8 4 → 2 5 6 4 8 → 2 5 4 6 8 → 2 4 5 6 8 위처럼 선택된 인덱..
이번 글은 선택 정렬에 대해서 정리해보려고 한다. 선택 정렬이란? 선택 정렬은 정해진 순서에 들어갈 원소를 찾는 정렬이다. 첫 번째 순서에는 첫 번째 위치에 가장 최솟값을 찾아서 교환한다. 두 번째 순서에는 두 번째 최솟값을 찾아서 교환한다. 이를 계속 반복해서 정렬을 진행하게 된다. 예를 들어 설명해보겠다. ( 9 6 7 3 5 ) 1회전 9 6 7 3 5 → 3 6 7 9 5 2회전 3 6 7 9 5 → 3 5 7 9 6 3회전 3 5 7 9 6 → 3 5 6 9 7 4회전 3 5 6 9 7 → 3 5 6 7 9 위처럼 숫자 배열 안에서 가장 작은 숫자를 찾아서 현재 인덱스에 들어갈 숫자를 찾아서 교환하는 방식으로 이루어진다. 각 회전에 대한 설명은 다음과 같다. 1회전에서는 첫 번째 자리에 가장 작..