목차 기본적인 ArrayList ArrayList는 잘 알려져있듯이 java.util에 들어 있는 class 중의 하나다. 배열과 다르게 크기를 조절할 수 있고 RandomAccess 인터페이스를 상속해서 내부 요소에 대한 O(1) (상수시간)에 가까운 탐색이 가능하다. 하지만 요소를 추가하거나 삭제할 때는 O(n)이 걸리기 때문에 많은 요소를 삭제해야 한다면 LinkedList와 같은 자료 구조를 사용하자. 다음과 같이 제네릭을 사용해 보통 새로운 ArrayList를 생성한다. import java.util.ArrayList; class Main { private static ArrayList orders = new ArrayList(); public static void main(String[] ar..
목차 서론 PS 세상에서 난 행복할 수 없는걸까... https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 한달 전에 풀었었지만 오늘 프로그래머스에서 동일한 문제를 풀다가 생각이나서 Java로 다시 풀어봤다! https://school.programmers.co.kr/learn/courses/30/lessons/42628 참고로 프로그래머스에 있는 문제와 백준에 올라와 있는 문제는 동일하다. 같은 로직을 써서 정답을 받을 수 있지만 프로그래머스의..
목차 왜 Gradle? 스프링 부트를 통해 스프링 프로젝트를 만들고자 하면 다음과 같이 프로젝트 빌드를 어떤 빌드 도구를 사용해 빌드할 것인지 물어본다. 유명한 스프링 개발자인 김영한 님의 설명을 빌리자면 원래는 스프링은 Maven을 기반으로 만들어졌지만 현재는 기존 레거시 프로젝트나 원래 메이븐을 쓰던 프로젝트가 아니라면 모두 Gradle로 옮기는 추세라고 한다. 또한 Google에서도 안드로이드를 위한 공식 빌드 도구로 Gradle을 선택했다! (https://developer.android.com/studio/build?hl=ko) 하지만 토이 프로젝트를 시작하면서 왜 Gradle로 다들 옮겨갈까라고 생각하면서 왜 Gradle을 쓸까 문득 궁금해졌다. 둘의 차이점과 왜 Gradle을 쓰는지 알아보기..
목차 1. 시간 복잡도 2. 빅오 표기법 3. 예시 개요 복잡도는 알고리즘의 성능을 나타내는 척도이다. 필자도 아직 걸음마 떼고 있는 실정이라 이게 뭐 대수인가 싶었다. 역시 사람은 문제가 닥치기 전까지는 무지한 법이다... 1. 시간 복잡도 (Time Complexity) 시간 복잡도란 작성한 프로그램이 모든 입력을 받아 이를 처리하고 실행 결과를 출력하는 데까지 걸리는 시간을 의미한다. 보통 코딩 테스트에는 시간 제한이 있으며 (출제자가 문제를 해결하라고 준 시간 제한이 아닌 프로그램 출력까지 걸리는 시간**) 문제에서 만점을 받기 위해서는 해당 시간안에 동작하는 프로그램을 작성해야 한다. 프로그램을 비효율적으로 작성하면 '시간 초과'로 도배된 창을 만날 수 있다. 2. 빅오 표기법(Big - O) ..
백준 10699번 나처럼 헤매는 사람이 없기를 바라며.. 사실 정말 쉬운 문제라고 할 수 있다. 그런데 뭐가 문제냐 라고 물으신다면.. 10699번: 오늘 날짜 (acmicpc.net) 10699번: 오늘 날짜 서울의 오늘 날짜를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 설명에도 아주 잘 나와있다. 채점 서버의 시간대(Timezone)는 UTC + 0이다. 통상 한국의 표준 시간대(KST)는 UTC + 9이다. 그래서 아래와 같이 코드를 짠다면 import datetime dt = datetime.datetime.today() dt = dt.strftime("%Y-%m-%d") print(dt) 우리가 원하는건 UTC + 0의 시간대이다. 다행히도 datetime library는..