구간 칠하기
·
ALGORITHM
안녕하세요. 오늘은 구간을 칠하는 알고리즘에 대해 알아보겠습니다. 두 구간을 합한 크기 구하기A는 [2, 5] 구간을, B는 [3, 8] 구간을 청소했습니다.총 몇 개의 칸을 청소했는지를 구해보세요. 위의 문제는 2개의 구간이 주어졌으므로, 2가지 케이스로 생각해볼 수 있습니다. case 1. 두 구간이 겹치는 경우각 구간의 크기에서 겹치는 부분을 제외해야 합니다. case 2. 두 구간이 겹치지 않는 경우각 구간의 크기를 합하면 됩니다. 💡접근 아이디어하지만, 1차원 배열을 활용하면 더욱 간단히 해결할 수 있습니다.각 구간을 배열에 1로 기록하면서 직접 시뮬레이션을 진행하면 됩니다.총 몇 개의 칸을 청소했는지 구하려면 값이 1인 갯수만 세주면 됩니다.만약 음수 구간을 포함한다면, 모든 좌표에 특정 O..
십진수를 2진수로, n진수를 m 진수로 - 진수 변환 [알고리즘/JAVA]
·
ALGORITHM
안녕하세요.오늘은 10진수를 2진수로 바꾸는 방법과 그 외의 진수들의 변환에 대해 알아보겠습니다. 목차 10진수를 2진수로 바꾸는 법먼저, 10진수 29를 2진수 11101로 바꾸는 과정은 다음과 같습니다.1. 10진수를 2로 나누고 나머지를 배열에 기록합니다. (29 / 2 -> 14 / 2 -> 7 / 2... )2. 10진수가 0보다 클 때까지 나눠주는 과정을 반복합니다. (3 / 2 -> 1 / 2 -> 0, 0보다 크지 않으므로 연산을 종료합니다.)3. 기록한 나머지 배열을 거꾸로 읽어주면 2진수가 완성됩니다. 구현 코드 (1)코드로 간략하게 구현하면 다음과 같습니다.import java.io.*;import java.util.*;public class Main { public stat..
날짜와 시간 계산 - 시뮬레이션 [알고리즘]
·
ALGORITHM
1. Time to Time (흐른 시간 계산)2시 5분에서 4시 1분이 되려면 몇 분이 흘러야 하는지 계산하려면, 시뮬레이션을 이용하여 구할 수 있습니다.1분 단위로 시뮬레이션을 하며, 60분이 되면 시간을 늘리고 분을 0으로 맞추면 됩니다.public class Main { public static void main(String[] args) { int hour = 2, mins = 5; int elapsedTime = 0; while(true) { if(hour == 4 && mins == 1) break; elapsedTime++; mins++; ..
[알고리즘] 비트마스크 (Bitmask)
·
ALGORITHM
안녕하세요. 오늘은 정수의 이진수표현을 활용하여 문제를 해결하는 기법인 비트마스크에 대해 알아보겠습니다. 또한 기본적인 비트 연산자에 대해서도 설명해보려고 합니다.비트마스크를 설명하기 전에 기본적인 비트 연산자에 대해 설명하도록 하겠습니다. 비트 연산자 (&, |, ^, >)1. and 연산자 ( & )두 수를 이진수로 표현한 뒤, and 연산을 수행합니다. 101 (5) 110 (6)and ---------- 100 (4)2. or 연산자 ( | )두 수를 이진수로 표현한 뒤, or 연산을 수행합니다. 101 (5) 011 (3)or ---------- ..
[Algorithm] 이분탐색 알고리즘 - Upper Bound/Lower Bound
·
ALGORITHM
안녕하세요.오늘은 이분 탐색 알고리즘에 대해 알아보겠습니다. 또한 탐색의 경계가 되는 Upper Bound와 Lower Bound에 대해 설명하고,이분탐색의 탐색 범위에 관한 얘기도 해보겠습니다. 이분탐색이란?정렬된 배열에서, 원하는 값을 효율적으로 찾는 알고리즘입니다.배열의 중간값이 찾고자하는 값보다 크면 오른쪽을, 작으면 왼쪽을 버려 원하는 값을 찾습니다.동작 과정은 다음과 같습니다. 1. left = 0, right = arr.length2. 왼쪽을 버리면 left = mid+1로, 오른쪽을 버리면 right = mid로 업데이트 합니다.3. 하한값 탐색 시, mid >= taret일 때만 버립니다.4. 상한값 탐색 시, mid > target일 때만 버립니다.5. 배열 탐색은 left 6. ..
[JAVA] Arrays.sort 와 Collections.sort의 차이
·
ALGORITHM
안녕하세요.오늘은 자바의 Arrays.sort와 Collections.sort의 차이에 대해 써보려고 합니다. 저는 블로그에 학습한 기록을 정리하는 것에 큰 의미를 두는 편이 아니라 그동안 노션에만 정리해왔었는데요.저빼고 다 블로그 하고 있길래 시작합니다. . .1일 1블챌... 레츠꼬. . . 아무튼. 궁금하게된 이유Arrays.sort와 Collections.sort의 차이에 대해 궁금해하게 됐던 이유는,알고리즘 문제를 풀던 도중Collections.sort는 시간 초과가 나는데 Arrays.sort는 시간 초과가 나지 않아서였습니다. 왜 Collections.sort가 Arrays.sort보다 성능이 좋을까?결론을 먼저 말하자면,Arrays.sort는 Dual-Pivot Quicks..