전체 글

전체 글

    [Java] Dynamic Programming, DP에 대해 알아보자

    다이나믹 프로그래밍 다이나믹 프로그래밍에서는 큰 문제를 해결하기 위해 여러 작은 문제를 해결하고, 해결한 문제의 결과를 저장해두었다가 필요할 때 계산없이 바로 사용할 수 있도록 합니다. 이때 계산된 결과(작은 문제)는 메모리 영역인 DP 테이블에 저장하게 됩니다. 다이나믹 프로그래밍을 수행하게 되면 수행 시간 효율성을 비약적으로 향상시킬 수 있고, 동적 계획법이라고도 불립니다. 일반적으로 Top-down, Bottom-up 방식으로 구현할 수 있습니다. 다이나믹 프로그래밍의 조건 다이나믹 프로그래밍은 문제가 다음 두 가지 조건을 만족할 때 사용할 수 있습니다. 1. 최적 부분 구조(Optimal Substructure) 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수..

    [Java] 스트림이란? 스트림stream 사용하기

    스트림 stream 자바7까지는 for문이나 반복자 Iterator로 컬렉션이나 배열의 요소를 출력할 수 있었습니다. 하지만 이 방식은 코드가 너무 길고, 재사용성이 떨어집니다. 또한, 지금까지 List를 사용할 때는 Collections.sort()를 사용하고, 배열을 정렬할 때는 Arrays.sort()를 사용해왔습니다. 각 클래스에 같은 기능의 메서드가 중복해서 정의되어 있는 것이죠. 자바8부터 사용할 수 있는 stream은 이러한 문제를 해결해줍니다. 스트림에는 데이터 소스를 추상화하여, 데이터 소스에 상관없이 같은 방식으로 데이터를 다룰 수 있게 해줍니다. 이로 인해 코드의 재사용성이 높아지게 됩니다. 스트림을 사용해서 Integer배열과 List를 정렬해서 출력해보겠습니다. public cla..

    [TIL - 20230310]

    😊 잘한점 기술 매니저님이 내 코드를 보셨다...! 오늘 해결한 알고리즘 문제는 변수가 많지 않았고, 다른 문제도 볼 수 있겠냐고 하셔서 다른 문제 풀이를 보여드렸다. 여기저기 디버그가 찍혀있는 것을 보시고 잘하고 있다고 해주시는데 나의 노고를 알아주신 것 같아 기쁘다... 하하. 변수명에 대해서는 잘하고 있다고 해주셨는데, 예전에 우테코 프리코스하면서 피드백 받았던 점을 잘 고친 것 같아 뿌듯하다. 😊 개선할 점 코드 보시고 람다랑 stream 잘 쓰고 있다고 해주셨는데, 그냥 쓸 줄만 알고 깊이 있게 학습은 못했는데... dp도 공부 중이라 말씀드렸는데 얼른 공부해서 정리해봐야겠다. 그렇게 해서 정리해 본 스트림! https://yeon-dev.tistory.com/104 [Java] 스트림이란? 스..

    [Java] String 배열 대소문자 구분 없이 오름차순/내림차순 정렬하기

    String 배열 대소문자 구분하여 오름차순 정렬 기본적으로 Arrays.sort() 사용하여 영문 문자열을 정렬하면 대소문자를 구분하여 정렬합니다. import java.util.Arrays; public class caseSort { public static void main(String[] args) { String[] strings = {"c", "B", "a", "b", "C", "A"}; //대소문자 구분하여 정렬 Arrays.sort(strings); System.out.println(Arrays.toString(strings)); } } String 배열 대소문자 구분 없이 오름차순 정렬 Comparator에 String.CASE_INSENSITIVE_ORDER 를 전달하면 대소문자 구분없..

    [TIL - 20230309]

    😊 느낀점 알고리즘 문제가 3개로 줄어 개인 공부할 시간이 늘어났다. 아직 개인적으로 공부할게 많이 남아있기 때문에 환영할 일이다. 오후 3시부터 오후 9시까지는 무조건 자리에 있어야 하니 딴 짓 안 하고 공부하게 된다. 🤔 개선할 점 오늘 원시 배열 오름차순에 Arrays.sort(객체명)를 사용했는데 어라, 원시 배열 내림차순은 어떻게 하더라? 잊어버렸다. int 배열 내림차순이 기억나지 않으면 List를 사용해서 사용하곤 하는데, 꼭 int 배열로 쓰고 싶은 경우가 있다. 이제는 잊어버리지 않도록 정리해두자. 🧐 배운점 int 배열 내림차순은 Arrays.sort(객체명, Colletions.reverseOrder())를 사용할 수 없기 때문에 원시 타입의 배열을 래퍼 클래스 배열로 변환시켜주어야 ..

    [Java] 객체 배열/리스트 오름차순,내림차순 정렬과 다중 조건 정렬

    Comparable 인터페이스 - compareTo comparable 인터페이스의 compareTo 메서드를 오버라이드해서 사용합니다. 1) 오름차순 정렬 기준 정렬 기준을 나이 오름차순으로 정의 Arrays.sort(객체명), Collections.sort(객체명) 통해 사용 내림차순: Collections.sort(객체명, Collections.reverseOrder()) 리스트인 경우 내림차순: 객체명.sort(Collections.reverseOrder())으로 사용 가능 import java.util.*; public class classSort{ static class Person implements Comparable { private String name; private int age; ..

    [Java] int 배열, List 오름차순/내림차순 정렬

    평소 int 배열을 자주 사용하는데 오름차순 정렬은 쉽지만, 항상 내림차순 정렬이 기억이 안나더라구요. 그래서 오늘은 int 배열과 List의 오름차순, 내림차순 정렬에 대해 알아보겠습니다. int 배열 int 배열을 정렬할 때는 java.util.Arrays를 이용합니다. 1) 오름차순 정렬 import java.util.Arrays; public class primitiveSort { public static void main(String[] args) { int[] arr = {25, 4, 7, 1}; //오름차순 정렬 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); } } 2) 내림차순 정렬 int 배열의 내림차순 정렬은 바로 Arrays..