Java 4

[프로그래머스] 입국심사(LEVEL 3)

문제링크 문제접근 ❓ 이분탐색 💡 심사하는 시간은 1부터 max(times[i]) * n 까지 존재한다. 모든 사람을 심사할 수 있는 최소 시간을 찾는 것이 이 문제의 해답이다. 1 ~ max(times[i])*n 사이의 적절한 값을 찾아야 하고 상수값의 범위가 10억 이기때문에 굉장히 크게 주어질 수 있는 상황이다. 따라서 최대한 시간을 단축해야하는 문제이다. 그래서 이진탐색으로 1 ~ max(times[i])*n 사이에서 값을 찾는 것이다. mid 값을 통해서 mid 시간안에 처리할 수 있는 총 사람수를 구하고 (mid / times[i] 연산을 통해서) [해당시간안에 처리할 수 있는 사람 수] 와 [목표 사람수]를 비교한다. [처리할수 있는 사람수]가 [처리해야되는 사람수]보다 많으면 시간을 너무 ..

[자료구조] 배열(Array)의 정의 및 장단점, 기본 사용법

배열이란? 동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조이다. 즉, 연관된 데이터를 그룹화하여 묶어준다고 생각하면 된다. 장점 인덱스를 이용한 항목 접근 속도가 빠르다. 배열이 선언되면 자료형에 따라 배열 항목의 크기가 결정된다. 4byte int 데이터를 담는 배열을 선언할 경우 항목 크기 역시 4byte가 된다. 배열의 기본 주소는 배열의 맨 처음 부분을 가리키고, 블럭단위로 메모리를 차지한다. 따라서 "기본주소 + (데이터크기 * index)"로 특정 인덱스에 위치한 항목에 접근할 수 있다. 예를 들어 int 배열 5번 인덱스에 접근하려면 "기본주소 + (4 * 5)"를 계산한 결과로 나온 메모리주소를 찾아가면 된다. 이처럼 위치에 상관없이 한 번의 연산으로 찾고..

[String] String 클래스 메소드 정리

자주 사용하는 String 클래스의 메소드들을 정리해보려고 한다. startsWith : 문자열이 지정한 문자로 시작하는지 판단, 같으면 true 다르면 false 반환. (대소문자 구별) String str = "apple"; boolean result = str.startsWith("a"); System.out.println(result); // true endsWith : 문자열 마지막이 지정한 문자로 끝나는지 판단, 같으면 true 다르면 false 반환. (대소문자 구별) String str = "apple pie"; boolean result = str.endsWith("e"); System.out.println(result); // true equals : 두개의 String의 값만을 비교해..

[String] String, StringBuffer, StringBuilder 차이

Java 에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 크게 문제가 되진 않는다. 그러나 연산 횟수가 많아지거나 멀티 쓰레드 등의 상황이 발생 한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해 주어야 한다. String vs StringBuffer / StringBuilder String과 StringBuffer/StringBuilder 클래스의 가장 큰 차이점은 String은 불변(immutable) 의 속성을 갖는다는 점이다. String str = "hello"; // String str = new String("hello"); str += " wor..