시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 5060 3209 2691 63.065% 문제 웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로 감소하게 된다. 따라서 운동을 하지 않고, 가만히 있다면 매일매일 중량이 감소할 뿐이다. 다행히도 이 대학원생은 N개의 서로 다른 운동 키트를 가지고 있다. 이 대학원생은 하루에 1개씩의 키트를 사용하며, 매일 어떤 키트를 사용할 지는 마음대로 결정할 수 있다. 운동 키트들은 각각의 중량 증가량을 가지고 있으며, 사용할 때마다 즉시 중량이 증가하게 된다. 이 때 몇몇 운동 키트들의 중량 증가..
https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 문제 지도가 주어지면 모든 지점에 대해서 목표지점까지의 거리를 구하여라. 문제를 쉽게 만들기 위해 오직 가로와 세로로만 움직일 수 있다고 하자. 입력 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수..
https://www.acmicpc.net/problem/17484 17484번: 진우의 달 여행 (Small) 첫줄에 지구와 달 사이 공간을 나타내는 행렬의 크기를 나타내는 N, M (2≤ N, M ≤ 6)이 주어진다. 다음 N줄 동안 각 행렬의 원소 값이 주어진다. 각 행렬의 원소값은 100 이하의 자연수이다. www.acmicpc.net 문제 우주비행이 꿈이였던 진우는 음식점 '매일매일싱싱'에서 열심히 일한 결과 달 여행에 필요한 자금을 모두 마련하였다! 지구와 우주사이는 N X M 행렬로 나타낼 수 있으며 각 원소의 값은 우주선이 그 공간을 지날 때 소모되는 연료의 양이다. 진우는 여행경비를 아끼기 위해 조금 특이한 우주선을 선택하였다. 진우가 선택한 우주선의 특징은 아래와 같다. 1. 지구 ->..
회사에 입사하고 난 뒤, 글을 안쓰게 되었다. 딱히 야근을 하는 것은 아니지만 뭘 해야 할지 찾느라 바빴고, 이것 저것 해보고 싶은 것이 많았기 때문일까? 아무튼, 그 동안 무얼 해왔는지 남겨보려고 한다. 먼저 게임 서버 개발에 관심이 생겨서 C++, C# 서버에 대해 알아보고 공부를 살짝 해보았다. 네트워크적인 지식을 기반으로, 쓰레드, IOCP 등에 대해 기본적인 부분만 공부를 하고 살짝 찍먹만 해봤다. 두 번째로 딥러닝 관련 공부도 찍먹 해봤다. T2I(Text to Image)인 Stable Diffusion을 Local에 올려서 이것 저것 사용해보기도 하고, 메타에서 무료로 오픈(?)한 LLM 모델인 라마를 로컬에 올려보았다. 근데 이 LLM이란 친구가, 생각보다 많은 리소스를 필요로 하더라. ..
너무 운이 좋게도 어려운 상황에 취업에 성공하게 되었다. 덕분에 자리를 조금 잡고 적응한다고 시간을 보내며 지내고 있다. 두 달?쯤 지난 것 같은데 뒤쳐지는 기분이 들어 다시 포스팅과 공부를 시작해야겠다고 마음을 잡았다. 오늘은 이펙티브 자바를 공부하기 위해 첫 장을 폈다. 주니어 개발자 입장에서 매우 어렵다는 후기가 많았지만 그럼에도 도전하는 이유는 내가 시니어가 되었을 때, 지금 내가 공부한 내용을 다시 본다면 아마 감회가 새롭지 않을까? 잘못 알고있던 부분이 그때는 보이지 않을까? 하는 생각 때문이다. 기회가 된다면 간간히 이펙티브 자바를 토대로 공부한 내용을 포스팅 해볼 생각이다.
java.util 자바의 자료 구조를 담고 있는 패키지 import java.util.*; Stack(스택) 한쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 구조 동적 배열, 단일 연결 리스트로 구현할 수 있음 push Stack stack = new Stack(); for (int i = 1; i < 5; i++) { stack.push(i); } System.out.println(stack); // [1, 2, 3, 4, 5] 스택의 top 에 데이터를 추가 시간복잡도 : O(1) pop Stack stack = new Stack(); for (int i = 1; i
HashTable 키(Key)와 값(Value)쌍의 데이터 구조 Key와 Value에 Null을 허용하지 않음 동기화 보장 Thread-safe하기 때문에, 멀티 쓰레드 환경에서 사용 가능 get(), put(), remove() 등에 synchronized키워드가 붙어 있음 해당 키워드들은 메소드 호출 전, 쓰레드 간 동기화 락 쓰레드간 동기화 락은 매우 느린 동작이라는 단점 존재 public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { ... public synchronized V put(K key, V value) { if (value == null) { throw new NullPointer..
Rest, RestAPI, Restful Rest Api 성숙도 모델 rest api 의 발전 단계를 모델화 성숙도 모델은 총 4 단계로 나누어지며 각 단계를 달성할 수록 REST API 에 가까워짐 REST - 0 단계 crud CREATE : POST /api/user READ : POST /api/user UPDATE : POST /api/user DELETE : POST /api/user request POST /api/user { // body 에 담는 데이터로 요청을 구분함 "function": "getUser", "arguments" [ "1" ] } response HTTP/1.1 200 OK { "result" { "id": "1" "name": "honey", } } 리소스 구분없이 설..