작성 배경
코딩테스트 문제를 풀면서 사용되는 로직 중 몰랐던 부분이나 추가로 공부한 내용을 기록해두려고 합니다.
전체 소스는 개인 github에 올려두었습니다. jeoningu/AlgorithemTest: 알고리즘/코딩테스트 (github.com)
본론
코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 (programmers.co.kr)
-숫자 길이가 10자리를 넘으면 int의 표현범위(약 21억, 10자리)를 넘어서기 때문에 long을 사용해야한다.
코딩테스트 연습 - 개인정보 수집 유효기간 | 프로그래머스 스쿨 (programmers.co.kr)
- 날짜 계산 시에 날짜 값을 만들어서 계산하면 편하다.
// 모든 달은 28일까지 있다고 가정합니다.
private int calculateDateVal(String dateStr){
String[] dateStrSplit = dateStr.split("\\.");
int dayVal = Integer.parseInt(dateStrSplit[2]);
int monthVal = Integer.parseInt(dateStrSplit[1])*28;
int yearVal = Integer.parseInt(dateStrSplit[0])*28*12;
return yearVal + monthVal + dayVal;
}
- Integer ArrayList을 int 배열로 변환 방법
// 리스트에 값 추가해서 사용
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
// 배열 반환을 위해 Integer List를 int 배열로 변환
// 방법 1
int[] arr1 = new int[list.size()]
for (int i = 0 ; i < list.size() ; i++) {
arr1[i] = list.get(i).intValue();
// 방법 2
int[] arr2 = list.stream()
.mapToInt(i -> i)
.toArray();
// 방법 3
int[] arr3 = list.stream()
.mapToInt(Integer::intValue)
.toArray();
// 방법 4
int[] arr4 = list.stream()
.filter(i -> i != null)
.mapToInt(i -> i)
.toArray();
코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 | 프로그래머스 스쿨 (programmers.co.kr)
List<Long>을 int배열로 변환
List<Long> list = new ArrayList<>();
int[] array = list.stream().mapToInt(i->Math.toIntExact(i)).toArray();
숫자를 쪼개는 방법
List<Long> list = new ArrayList<>();
while (n>0) {
list.add(n%10);
n/=10;
}
코딩테스트 연습 - 정수 제곱근 판별 | 프로그래머스 스쿨 (programmers.co.kr)
루트, 제곱 함수
정수 인지(long 또는 int) 판별 방법
public long solution(long n) {
double sqrt = Math.sqrt(n); // 루트
// 정수 인지 판별
long sqrtToLong = (long) sqrt;
if ( sqrtToLong > sqrt || sqrtToLong < sqrt){
return -1;
}
return (long)Math.pow(sqrt+1, 2); //제곱
}
String str = "java aa"); // java 다음 공백
str.startsWith("java "); // true
[Java]특정 문자열로 시작하는지 확인하는 방법 (tistory.com)
[Java]특정 문자열로 시작하는지 확인하는 방법
특정 문자열로 시작하는지 확인하는 방법 이번 포스팅에서는 문자열이 특정 문자열로 시작하는지 확인하는 방법을 소개합니다. 문자열에서 특정 문자열이 존재하는지 확인하는 방법과 유사하
developer-talk.tistory.com
import java.util.Arrays;
Arrays.sort(배열); // 배열이 정렬됨. ( 리턴으로 받는게 아님)
Java - 배열 정렬(Sorting) (오름차순, 내림차순) (codechacha.com)
코딩테스트 연습 - 소수 찾기 | 프로그래머스 스쿨 (programmers.co.kr)
String str = "가나다라";
// subString(startIndex, endIndex)에서 startIndex, endIndex에 같은 색인을 넣으면 빈 문자열 ""을 반환
str.subString(0, 0); // ""
str.subString(1, 1); // ""
str.subString(4, 4); // ""
// subString(startIndex)
// 문자열의 마지막 index + 1 값을 startIndex로 지정하면, 빈 문자열 ""을 반환
// 즉 문자열 길이만큼을 startIndex로 지정하면, "" 반환
str.subString(sub.length()); // ""