개발환경, 도구/알고리즘

java 코딩 테스트 팁

gu9gu 2023. 3. 8. 13:11

작성 배경

코딩테스트 문제를 풀면서 사용되는 로직 중 몰랐던 부분이나 추가로 공부한 내용을 기록해두려고 합니다.

전체 소스는 개인 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()); // ""

 

 

 

 

 

 

 

 

'개발환경, 도구 > 알고리즘' 카테고리의 다른 글

알고리즘  (0) 2023.03.09
시간복잡도  (0) 2023.01.24